Reactjs 减速器支柱在组件中发生变化

Reactjs 减速器支柱在组件中发生变化,reactjs,react-redux,Reactjs,React Redux,在我的React应用程序中,我有一个redux reducer,它将列表作为道具发送到我的组件。 我将道具复制到本地状态,并显示为下拉列表。用户更改下拉列表以更改我的本地状态。 单击cancel,我将调用redux Toastr,它将触发一个方法,用原始props.list重置我的状态。但由于某种原因,props.list也发生了类似于我的状态变化的变化。据我所知,我认为传递给镇静者的道具不会改变,直到我再次呼叫动作创造者 有人面临类似的问题吗?或者我做错了什么 很抱歉没有发布代码,如果需要,我

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

有人面临类似的问题吗?或者我做错了什么
很抱歉没有发布代码,如果需要,我会准备一个演示。谢谢

你所做的是一种反模式,因为你正在打破react的单一真相来源规则。您不能在与redux状态绑定的组件内部保持状态,并期望它能够顺利工作。当单独使用
React
而不使用
Redux
时,以及当您尝试将道具作为状态传递时,会出现一个类似的问题,即破坏单一真相来源。在这种情况下,有一个新的生命周期钩子
static getDerivedStateFromProps
,但即使是这个钩子也建议少用,您可以阅读它。因此,如果您的目的是将状态重置回其原始值,您可以:

  • 使用
    静态getDerivedStateFromProps
    (主要为UI保留)
  • 使用一个钥匙道具,它会将您重置回初始状态
  • 使用备忘录辅助工具,例如
    memoizeone

  • 你所做的是一种反模式,因为你正在打破react的单一真理来源规则。您不能在与redux状态绑定的组件内部保持状态,并期望它能够顺利工作。当单独使用
    React
    而不使用
    Redux
    时,以及当您尝试将道具作为状态传递时,会出现一个类似的问题,即破坏单一真相来源。在这种情况下,有一个新的生命周期钩子
    static getDerivedStateFromProps
    ,但即使是这个钩子也建议少用,您可以阅读它。因此,如果您的目的是将状态重置回其原始值,您可以:

  • 使用
    静态getDerivedStateFromProps
    (主要为UI保留)
  • 使用一个钥匙道具,它会将您重置回初始状态
  • 使用备忘录辅助工具,例如
    memoizeone

  • 请尽快发布您的代码演示:)发布一些代码总是有助于社区扩展正确的帮助,请发布一些代码。您如何复制道具?若您只是将道具分配给州,那个么您将创建从州到道具的引用。JavaScript不复制对象,而是分配引用。您可以尝试
    Object.assign
    并查看它是否有助于sthx Fyodor,这正是问题所在。成功了请尽快发布你的代码演示:)发布一些代码总是有助于社区扩展正确的帮助,请发布一些代码。你如何复制道具?若您只是将道具分配给州,那个么您将创建从州到道具的引用。JavaScript不复制对象,而是分配引用。您可以尝试
    Object.assign
    并查看它是否有助于sthx Fyodor,这正是问题所在。它起作用了