首页 > 解决方案 > 组件中的 Reducer Props 发生变化

问题描述

在我的 React 应用程序中,我有一个 redux reducer,它将一个 List 作为 props 发送到我的组件。
我将道具复制到本地状态,并显示为下拉菜单。用户更改下拉列表,因此我的本地状态发生更改。单击取消后,我正在调用 redux Toastr,它会触发一种方法来使用原始 props.list 重置我的状态。但由于某种原因, props.list 也发生了类似于我的状态变化的变化。据我所知,我认为传递给组件的道具不会改变,直到我再次调用动作创建者。

有人遇到过类似的问题吗?或者我做错了什么对不起没有发布代码,如果需要我会准备一个演示。谢谢!

标签: reactjsreact-redux

解决方案


您正在做的是一种反模式,因为您正在打破 react 的单一事实来源规则。您不能在与您的 redux 状态绑定的组件内部保持状态并期望它能够顺利运行。React当仅使用withoutRedux以及尝试将 props 作为状态传递时,会出现类似的破坏单一事实来源的问题。在这种情况下,有一个新的生命周期钩子static getDerivedStateFromProps,但即使是这个钩子也建议少量使用,您可以在此处阅读有关它的信息。因此,如果您的意图是将状态重置为原始值,您可以:

  1. 使用static getDerivedStateFromProps(主要为 UI 保留)
  2. 使用一个关键道具,它将你重置回你的初始状态
  3. 使用记忆帮助器,例如memoize-one

推荐阅读