我似乎误解了React.js的一些基本部分。
在http://facebook.github.io/react/docs/component-api.html
中它说,反应组件有setState()等方法。
但是当我这样做时:
var MyComp = React.createClass({
getInitialState: function() {
return {dummy: "hello"};
},
render: function() { return React.DOM.h1(null, this.state.dummy + ", world!") }
}
var newComp = MyComp(null);
React.renderComponent(newComp, myDomElement);
MyComp.setState({dummy: "Good Bye"}); // Doesn't work. setState does not exist
newComp.setState({dummy: "Good Bye"}); // Doesn't work either. setState does not exist
没有找到setState()方法。但是在文档中它说组件API,那么我在这里出错了什么?
答案 0 :(得分:12)
根据此blog post和this writeup,调用MyComp
不再返回实例,它会返回一个轻量级描述符。
反模式:
var MyComponent = React.createClass({
customMethod: function() {
return this.props.foo === 'bar';
},
render: function() {
}
});
var component = <MyComponent foo="bar" />;
component.customMethod(); // invalid use!
正确使用:
var MyComponent = React.createClass({
customMethod: function() {
return this.props.foo === 'bar';
},
render: function() {
}
});
var realInstance = React.renderComponent(<MyComponent foo="bar" />, root);
realInstance.customMethod(); // this is valid