我怎样才能做一个深度嵌套状态的副本?

这个问题在这里已经有了答案:

  • 我如何正确克隆一个JavaScript对象? 54个答案

  • 有几个选项:

  • 使用React站点上有一些优秀文档的update不可变助手,
  • 使用一个像克隆这样的软件包,为这种事情做了优化。
  • 我推荐第一个,因为语法特别强大,特别是在处理像Redux商店这样的大型结构时。

    作为文档的一个例子:

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

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


    最简单的捷径是:

    const clone = JSON.parse(JSON.stringify(state));
    

    总而言之,涉及克隆一个对象的问题,在那里有几个关于该主题的答案,取决于如下的东西:

  • 源对象中是否有函数引用,
  • 是否有dom元素参与,
  • 日期对象,
  • 和更多…
  • 但在那种情况下,你正在处理一个“简单的json Object”,因为它是redux状态,所以上面的方法将工作。

    另一种方法是递归函数,它复制所有嵌套数据,但如上所述,在这种情况下,您不必这样做,因为您不必担心dom元素或其他类似的东西。

    链接地址: http://www.djcxy.com/p/24781.html

    上一篇: how can I make a copy of deeply nested state?

    下一篇: how to make a copy of object in javascript/vuejs