shouldComponentUpdate 不会收到最新的状态
shouldComponentUpdate won't receive the newest state
我使用 Reflux.connect
方法来改变组件状态,但我无法在 shouldComponentUpdate
中获取 nextState
和 this.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 中,因为它允许您快速确定状态是否已更改。尝试养成在更改状态时始终返回新副本的习惯,并且永远不要更改状态内的任何内容,除非先克隆它。
我使用 Reflux.connect
方法来改变组件状态,但我无法在 shouldComponentUpdate
中获取 nextState
和 this.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 中,因为它允许您快速确定状态是否已更改。尝试养成在更改状态时始终返回新副本的习惯,并且永远不要更改状态内的任何内容,除非先克隆它。