2015-04-23 45 views
1

我知道这已经被问过,但是建议的解决方案不能帮助我,所以,这是我的代码,由于某种原因失败。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文件中看到,我只是重建的代码,以使一个非常简单的例子,并找出问题。

任何想法?

回答

2

我想你需要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

+0

谢谢,但快速浏览后,我看到了如果我使用JSX,这对我没有影响,我相信我是对的?无论如何 - 在app.js顶部放置“var React = require('react')”之后,它可以正常工作。 – joakimnorberg

+0

我认为它既然在react.Render中没有使用jsx ......当它工作时它工作:-) – errnesto

+0

我结束了使用'App = React.createFactory(require('path/to/App')) ' – timhc22