reactjs - 组件中的 Reducer Props 发生变化
问题描述
在我的 React 应用程序中,我有一个 redux reducer,它将一个 List 作为 props 发送到我的组件。
我将道具复制到本地状态,并显示为下拉菜单。用户更改下拉列表,因此我的本地状态发生更改。单击取消后,我正在调用 redux Toastr,它会触发一种方法来使用原始 props.list 重置我的状态。但由于某种原因, props.list 也发生了类似于我的状态变化的变化。据我所知,我认为传递给组件的道具不会改变,直到我再次调用动作创建者。
有人遇到过类似的问题吗?或者我做错了什么对不起没有发布代码,如果需要我会准备一个演示。谢谢!
解决方案
您正在做的是一种反模式,因为您正在打破 react 的单一事实来源规则。您不能在与您的 redux 状态绑定的组件内部保持状态并期望它能够顺利运行。React
当仅使用withoutRedux
以及尝试将 props 作为状态传递时,会出现类似的破坏单一事实来源的问题。在这种情况下,有一个新的生命周期钩子static getDerivedStateFromProps
,但即使是这个钩子也建议少量使用,您可以在此处阅读有关它的信息。因此,如果您的意图是将状态重置为原始值,您可以:
- 使用
static getDerivedStateFromProps
(主要为 UI 保留) - 使用一个关键道具,它将你重置回你的初始状态
- 使用记忆帮助器,例如
memoize-one
推荐阅读
- sql - 是否可以从视图构建一个 ssas 立方体?
- javascript - 为什么我的 YouTube React 组件会在播放下一个视频之前触发两次 PlayerState.ENDED 事件?
- mysql - 删除具有特定名称前缀的所有表
- java - 在运行时重新加载 CDI 上下文
- flutter - 如何使内容对齐,Flutter 零底部
- api - 您已超出此 API 问题的每日请求配额
- matlab - 使用matlab进行优化 -particlewarm / 遗传算法
- asp.net - 如何修复“ObjectContext 实例已被处置”
- typescript - 类型“NextPageContext”上不存在属性“商店”
- node.js - 您如何在 Node.js .env 文件中发表评论