是否可以在React-Redux应用程序中使用Immutable.js来比较shouldComponentUpdate中的道具?

时间:2016-09-21 13:02:15

标签: reactjs redux immutable.js

我目前正在研究React-Application,我在Redux-Reducers中使用Immutable.js。如果减少器没有改变它(如推荐的那样),它将返回先前的状态作为参考。 如果我现在将之前的状态与下一个状态(state===nextState)进行比较,它将返回true,因为引用没有改变,对吧?

现在如果reducer改变了状态,它将返回一个新的Immutable.js Map。

现在进行相同的比较会返回false,因为它是一个新的Map。

以某种方式在shouldComponentUpdate中检测道具变化是否合理?

如果是这样,有没有办法修改react-redux连接函数以使用我的自定义shouldComponentUpdate方法?因为显然不可能将Immutable.js对象作为道具传递给组件。

1 个答案:

答案 0 :(得分:1)

在mapStateToProps中,如果您不将此不可变迭代转换为等效的JS对象并按原样传递Immutable对象。你可以做到。

例如:

而不是

const mapStateToProps = (state) => ({ ...(state.toJS()) });

从组件中的状态访问任何数据的方法:this.props.data

您也可以写为:

const mapStateToProps = (state) => ({ state });

从组件中的状态访问任何数据的方法:this.props.state.get('data')