【问题标题】:Would it be possible to utilize Immutable.js in a React-Redux Application for comparing props in shouldComponentUpdate?是否可以在 React-Redux 应用程序中使用 Immutable.js 来比较 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 了解要问什么以及如何问。

标签: reactjs redux immutable.js


【解决方案1】:

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

例如:

代替

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

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

你也可以写成:

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

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

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 2016-08-06
    • 2016-10-04
    • 2023-03-04
    • 2015-05-21
    • 2018-03-13
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多