我目前正在研究React-Application,我在Redux-Reducers中使用Immutable.js。如果减少器没有改变它(如推荐的那样),它将返回先前的状态作为参考。
如果我现在将之前的状态与下一个状态(state===nextState)
进行比较,它将返回true,因为引用没有改变,对吧?
现在如果reducer改变了状态,它将返回一个新的Immutable.js Map。
现在进行相同的比较会返回false,因为它是一个新的Map。
以某种方式在shouldComponentUpdate中检测道具变化是否合理?
如果是这样,有没有办法修改react-redux连接函数以使用我的自定义shouldComponentUpdate方法?因为显然不可能将Immutable.js对象作为道具传递给组件。
答案 0 :(得分:1)
在mapStateToProps中,如果您不将此不可变迭代转换为等效的JS对象并按原样传递Immutable对象。你可以做到。
例如:
而不是
const mapStateToProps = (state) => ({ ...(state.toJS()) });
从组件中的状态访问任何数据的方法:this.props.data
您也可以写为:
const mapStateToProps = (state) => ({ state });
从组件中的状态访问任何数据的方法:this.props.state.get('data')