我在反应中有以下代码:
getInitialState: function() {
var state= {
data: {}
};
fetch(this.props.dataurl)
.then(function(response) {
return response.json();
})
.then(function(result) {
this.setState({data:result});
}.bind(this));
return this.state;
},
componentDidMount: function() {
console.log(this);
console.log(this.state);
}
所以在getInitialState
函数中,我使用fetch的结果初始化状态变量数据,然后我想访问第二个函数componentDidMount
中的数据变量。
我遇到的问题是this.state
将数据对象返回为空,但是当我尝试记录this
时,我正在获取包含数据的数据变量。
那么为什么我有这种行为,我该如何解决呢?
答案 0 :(得分:1)
componentDidMount
并不保证异步fetch
已完成。
您应该定义在状态发生变化时调用的componentDidUpdate
,以便您可以对新数据执行任何操作。
componentDidUpdate(object prevProps, object prevState)
请参阅React Lifecycle。