在React

时间:2017-02-06 14:20:28

标签: reactjs

我在反应中有以下代码:

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时,我正在获取包含数据的数据变量。

那么为什么我有这种行为,我该如何解决呢?

1 个答案:

答案 0 :(得分:1)

componentDidMount并不保证异步fetch已完成。

您应该定义在状态发生变化时调用的componentDidUpdate,以便您可以对新数据执行任何操作。

componentDidUpdate(object prevProps, object prevState)

请参阅React Lifecycle