React.js无法读取属性'__reactAutoBindMap'为空
问题描述:
我知道这已经被问过,但是建议的解决方案不能帮助我,所以,这是我的代码,由于某种原因失败。React.js无法读取属性'__reactAutoBindMap'为空
app.js:
(function(React, _) {
var App = require('./components/App.react');
_.mixin(_.string.exports());
var render = function() {
React.render(
React.createElement(App),
document.getElementById('reactContent')
);
};
render();
}(React, _));
,然后App.react.js:
var React = require('react');
var Test = React.createClass({
render: function() {
return <div>Hello world</div>
}
})
module.exports = Test;
现在,我的控制台说:
Warning: This JSX uses a plain function. Only React components are valid in React's JSX transform.
app.js:20281 Warning: Something is calling a React component directly. Use a factory or JSX instead. See: http://fb.me/react-legacyfactory
app.js:6475 Uncaught TypeError: Cannot read property '__reactAutoBindMap' of null
感觉就像是最简单的事情。 ..我会包括我的package.json只是需要它。
{
"name": "app",
"version": "0.0.1",
"devDependencies": {
"gulp": "3.8.10",
"gulp-run": "1.6.5",
"gulp-less": "2.0.1",
"gulp-concat": "2.4.3",
"gulp-uglify": "1.0.2",
"gulp-minify-css": "0.3.11",
"gulp-jshint": "1.9.0",
"browser-sync": "1.8.2",
"browserify": "3.44.2",
"vinyl-source-stream": "1.0.0",
"vinyl-buffer": "1.0.0",
"reactify": "latest",
"underscore": "^1.7.0",
"del": "1.1.1",
"envify": "~3.0.0"
},
"paths": {
"less": "assets/less/*.less",
"js": "./app/**/*.js",
"jsx": "./app/**/*.jsx",
"app": "./app/app.js",
"html": "*.html"
},
"dest": {
"style": "style.css",
"app": "app.js",
"dist": "dist"
},
"dependencies": {
"react": "latest",
"underscore": "^1.7.0",
"flux": "^2.0.0"
}
}
有一个在这里多了很多,你可以从以.json文件中看到,我只是重建的代码,以使一个非常简单的例子,并找出问题。
任何想法?
答
我想你需要React.createFactory(require('./components/App.react'))
为解释在这里:https://gist.github.com/sebmarkbage/d7bce729f38730399d28
或使用ES6类:https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html
编辑: 我发现原来的博客文章:https://facebook.github.io/react/blog/2014/10/14/introducing-react-elements.html
谢谢,但快速浏览后,我看到了如果我使用JSX,这对我没有影响,我相信我是对的?无论如何 - 在app.js顶部放置“var React = require('react')”之后,它可以正常工作。 – joakimnorberg
我认为它既然在react.Render中没有使用jsx ......当它工作时它工作:-) – errnesto
我结束了使用'App = React.createFactory(require('path/to/App')) ' – timhc22