componentWillReceiveProps(nextProps) {
if (nextProps.group.data !== this.props.group.data) {
console.log(true);
}
}
group.data对象来自
const mapStateToProps = (state, props) => {
return {
group: {
data: state.group.data,
isFetching: state.group.isFetching,
error: state.group.error
}
}
}
我正在使用redux模块来收集数据......
我知道nextPros对this.props的引用,我知道一个解决方案是使用Immutable.js,但我找不到使用它的好例子,我发现很多复杂的集成它,因为我已经如此很多模块没有Immutable。
有没有其他解决方案可以将newProps与this.props进行比较,或者是如何将Redutable与Redux一起使用的好例子。
谢谢, 卢卡斯佛朗哥
答案 0 :(得分:3)
这意味着商店中的data
对象没有变化,您需要确保在reducer中返回一个新对象,并且从不对其进行变异。例如:
// reducer for group
reducer (state = initialState, action) {
...
// when your code is going to update data return a completely new object
return {...state,
data: { ...state.data, ...action.newData}
// never something like state.data.someProp = action.someProp
}
...
}
我需要看到更多代码更加确定,主要是reducer。
但如果表达式(nextPros.group.data !== this.props.group.data)
导致true
,则可以肯定地说data
对象的引用没有改变。