私はflux
を使用しており、setState
のcomponentDidMount
にReactネイティブアプリのトップコンポーネント内で試しています。 constructor
では、this.state = MainStore.getData();
は状態をうまく設定しているようです。しかし、何らかの理由でthis.setState(data);
が私のcomponentDidMount
に状態を設定していません。ここで私のフラックスパターンからトップコンポーネントと私の店の私のコードです。compnonentDidMountにネイティブsetStateが反応しません
コンポーネント:
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'
に正しく記録されますが、2番目のログでは状態はまだtest:null
であることがわかります。これは最初は店舗からconstructor
に返されます。
なぜthis.setState(data)
は状態を更新しないのですか?コンソールエラーはなく、状態を設定しません。