我正在使用close()
并在React Native应用中的顶级组件中的flux
上尝试setState
。在componentDidMount
中,constructor
似乎将状态设置得很好。但由于某些原因,this.state = MainStore.getData();
未在我的this.setState(data);
中设置状态。这是我的顶级组件的代码和我的助焊模式的商店。
组件:
componentDidMount
商店:
constructor(props) {
super(props);
this.state = MainStore.getData();
}
componentDidMount() {
MainStore.addChangeListener(this._onChange);
var data = MainStore.getUpdatedData();
console.log('data from store: ',data)
this.setState(data);
console.log('state: ',this.state)
}
我只是想让流程正常工作,所以我正在使用测试对象。在我的组件中,第一个控制台日志记录var kidsBankData = {
test:null
};
var kidsData = assign({}, EventEmitter.prototype, {
getData: function() {
return kidsBankData;
},
getUpdatedData: function(){
newObj = {
test:'test'
}
return newObj;
},
emitChange: function() {
this.emit(CHANGE_EVENT);
},
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
removeChangeListener: function(callback) {
this.removeListener(CHANGE_EVENT, callback);
}
});
的控制台日志是正确的控制台日志记录var data = MainStore.getUpdatedData();
但是第二个日志显示状态仍为test:'test'
,您可以看到它最初是什么从商店test:null
返回。
那么constructor
为什么不更新状态呢?没有控制台错误,它只是没有设置状态。