shouldComponentUpdate 不会收到最新的状态

shouldComponentUpdate won't receive the newest state

我使用 Reflux.connect 方法来改变组件状态,但我无法在 shouldComponentUpdate 中获取 nextStatethis.state 之间的不同部分。实际上,当调用 shouldComponentUpdate 时,this.state 已经有了我期望在 nextState 中的新值。

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
     }

确保您没有改变状态而是返回它的新副本。如果您的商店仅更改状态 内的字段 ,则 this.state 指针已经指向突变状态。

因此在您的商店 1 中,而不是:

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

尝试做:

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

这样每次更改时你都会得到一个新的 store1Data 副本。

不变性是处理状态时的一个重要概念,尤其是在 React/Flux 中,因为它允许您快速确定状态是否已更改。尝试养成在更改状态时始终返回新副本的习惯,并且永远不要更改状态内的任何内容,除非先克隆它。

Immutablity in React
ImmutableJs