が、私は最近、私は最初の更新の後に私のコードをテストした逆流接続/トリガ動作の変更は、後の
をv0.4.1するv0.3.0からの逆流をアップグレードし、私がしなければならなかった唯一の変更はにキーを追加したアップグレード私のコンポーネントのReflux.connect
コール。
しかし、私はいくつかの奇妙な行動を経験しています:
var SomeActions = Reflux.createActions([
'updateName'
]);
var SomeStore = Reflux.createStore({
listenables: [SomeActions],
init() {
this.name = '';
this.time = new Date();
},
getInitialState() {
return {
time: this.time
}
},
onUpdateName (newName) {
this.name = newName;
this.trigger({
name: this.name
});
}
});
var SomeComponent = React.createClass({
mixins: [React.connect(SomeStore, 'someState')],
componentDidMount() {
SomeActions.updateName(this.props.name);
},
render() {
console.log(this.state.someState);
...
}
});
を状態がちょうどtime
を含む、正しいコンポーネント最初のマウントをする場合。しかし、アクションがトリガーされると、今度は不正な状態になり、ちょうどname
が含まれます。アップグレード前の動作はtrigger
で、単に新しいキーを状態に追加/更新するだけでした。したがって、アクションがトリガされた後、私はtime
とname
の両方を含む状態になると予想していました。
更新中に何か迷ったですか?
あなたのトリガーにコンポーネントに店舗全体の状態を返すことができますが、 'this.trigger({ 名試すんでした:this.name、時間:これを.time }); '?あなたの状態は、時間をクリアしているものと置き換えられている可能性が最も高いです。 –
はい、それは動作しますが、複数の複雑なストアを持つ複雑なアプリケーションでは、各アクションがすべての可能な状態キーに対してトリガーを強制しないようにします。ストアの残りの部分が使用できるトリガーの周りに単一のラッパー関数を作成することによってそれを克服することができますが、引き続きトリガーがすべての可能な状態キーを強制する必要があります。私はそれを避けたいです。 –
これでsetStateはどこで起こっていますか? –