3

メソッドを使用してコンポーネントの状態を変更しますが、との間Reflux.connectの異なる部分を取得できません。実際には、が呼び出されたときに期待していた新しい値が既に含まれています。shouldComponentUpdatenextStatethis.statethis.statenextStateshouldComponentUpdate

Reflux で shouldComponentUpdate を使用したい場合、何をする必要がありますか?

  var component = React.createClass({
     mixins: [Reflux.connect(store1, 'store1data'),
              Reflux.connect(store2, 'store2data')],

     shouldComponentUpdate: function(nextProps, nextState) {
        //Here this.state.store1data is equal to nextState.store1data
     }
4

1 に答える 1

5

状態を変更していないことを確認し、代わりにその新しいコピーを返します。ストアが state 内のフィールドのみを変更する場合、this.stateポインターは既に変更された状態を指しています。

あなたのstore1では、代わりに:

store1Data.someKey = newValue;
this.trigger(store1Data)

やってみてください:

store1Data = _.assign({}, store1Data, {someKey: newValue}); // this uses lodash, for example
this.trigger(store1Data)

そうすれば、変更されるたびに store1Data の新しいコピーを取得できます。

不変性は、状態が変更されたかどうかをすばやく判断できるため、特に React/Flux で状態を操作する場合に重要な概念です。状態を変更するときは常に新しいコピーを返すようにし、最初に複製しない限り、状態内の何かに変更しないようにしてください。

React
ImmutableJsの不変性

于 2015-08-21T11:46:43.767 に答える