javascript - React/Redux - 如何复制深度嵌套状态?

标签 javascript reactjs ecmascript-6 redux

我有一个深度嵌套的 redux 状态,如下所示:

{
    name: "Item One",
    children: [
    {
        name: "Item Two"
        children: [
            ....
        ]
    },
    {
        name: "Item Three",
        children: [
            ....
        ]
    }
    ]
}

我需要制作它的副本,以便我可以方便地修改它,然后用它替换状态。

不幸的是,仅使用 {...state} 不起作用,因为所有嵌套子级都没有被复制,它们仍然引用相同的对象。有没有方便的解决方法?

最佳答案

有几个选项:

  1. 使用update immutability helper其中有一些优秀的docs on the React site ,
  2. 使用类似 clone 的包它针对此类事情进行了优化。

我推荐第一个,因为语法特别强大,尤其是在处理像 Redux 存储这样的大型结构时。

作为文档中的示例:

import update from 'immutability-helper';

const newData = update(myData, {
  x: {y: {z: {$set: 7}}},
  a: {b: {$push: [9]}}
});

允许您修改深层嵌套的属性,而不必担心现有对象上的危险突变。

关于javascript - React/Redux - 如何复制深度嵌套状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43635769/

相关文章:

javascript - 在嵌套 json 对象中按键查找并按值替换

javascript - 以对象为键的 Typescript Map

Javascript ES6 在同一个类中的另一个方法中调用一个方法显示错误我正在调用的类未定义

javascript - AngularJS 资源未解析

javascript - 以 Base 64 读取文件并将其存储到状态变量中

javascript - 另一个组件中的 React JS 引用函数

javascript - "@metamask/detect-provider: Unable to detect window.ethereum"错误,即使 Metamask 已安装并正在运行

javascript - 如何使用 Angular 7 更改 CSS 类

javascript - 如何将 getAccessToken 与 fetch 功能集成,以将数据从 DRF 后端加载到 React 前端?

JavaScript - 如何使用另一个条件过滤重复行