是否可以在 React-Redux 应用程序中使用 Immutable.js 来比较 shouldComponentUpdate 中的道具?
Posted
技术标签:
【中文标题】是否可以在 React-Redux 应用程序中使用 Immutable.js 来比较 shouldComponentUpdate 中的道具?【英文标题】:Would it be possible to utilize Immutable.js in a React-Redux Application for comparing props in shouldComponentUpdate? 【发布时间】:2017-01-29 18:01:02 【问题描述】:我目前正在开发一个 React-Application,我在 Redux-Reducers 中使用 Immutable.js。如果他们没有更改之前的状态(如推荐的那样),reducers 将返回之前的状态作为参考。
如果我现在将前一个状态与下一个状态 (state===nextState)
进行比较,它将返回 true,因为引用没有改变,对吧?
现在如果 reducer 改变了状态,它会返回一个新的 Immutable.js Map。
现在做同样的比较会返回 false,因为它是一个新地图。
以某种方式检测 shouldComponentUpdate 中的 prop 更改是否合理?
如果是这样,有没有办法修改 react-redux 连接函数以使用我自定义的 shouldComponentUpdate 方法?因为显然不可能将 Immutable.js 对象作为道具传递给组件。
【问题讨论】:
欢迎来到 SO。我们更喜欢可以回答的问题,而不仅仅是讨论。请访问帮助中心并拨打this tour 了解要问什么以及如何问。 【参考方案1】:在 mapStateToProps 中,如果您不将此不可变迭代转换为等效的 JS 对象并按原样传递不可变对象。你可以做到的。
例如:
代替
const mapStateToProps = (state) => ( ...(state.toJS()) );
从组件中的状态访问任何数据的方式:this.props.data
你也可以写成:
const mapStateToProps = (state) => ( state );
从组件中的状态访问任何数据的方式:this.props.state.get('data')
【讨论】:
以上是关于是否可以在 React-Redux 应用程序中使用 Immutable.js 来比较 shouldComponentUpdate 中的道具?的主要内容,如果未能解决你的问题,请参考以下文章