请原谅我是否偏离目标,但我试图将组件的状态设置为json对象,以便我可以使用该组件进行渲染。
以下是我的组件内部的内容:
render: function() {
this.serverRequest = $.get(this.props.source, function (data) {
this.state.content = $.parseJSON(data);
}.bind(this));
return (
<div>
{Object.keys(this.state.content).map(function (key) {
return <div>Key: {key}, Value: {this.state.content[key]}</div>;
})}
</div>
);
使用此代码,我目前得到:
未捕获的TypeError:无法读取属性&#39; state&#39;未定义的
任何人都知道为什么这不起作用?
答案 0 :(得分:1)
问题是,this
内的$.get()
不在React的范围内。在render中调用setState()
会抛出错误。以下内容应该有所帮助...
var App = React.createClass({
getInitialState: function() {
return {
content: {},
}
},
componentDidMount: function() {
this.serverRequest()
},
serverRequest: function() {
var _this = this
$.get(this.props.source, function(data) {
_this.state.content = $.parseJSON(data);
})
},
render: function() {
return ( < div >
{
Object.keys(this.state.content).map(function(key) {
return <div > Key: {
key
}, Value: {
this.state.content[key]
} < /div>;
})
}
< /div >
);
}
})