深度复制组件数组的最佳实践

时间:2017-10-30 21:46:12

标签: javascript reactjs

在我的应用中,我有这行代码:

var newMatrix = this.state.matrix;

我想设置' newMatrix' ' this.state.matrix'的副本,而不是参考。 ' this.state.matrix'是一个填充了React组件的2D数组,最终会在屏幕上呈现为网格。

将其深层复制到新变量中的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

在这种情况下,标准程序只是遍历您的数据结构并手动复制值或根据需要复制子对象的引用。

示例:

class Dog {
    constructor() {
        this.tag = {name: "foo", material: "bar"};
    }
}

function copyDog(dog) {
    let _dog = new Dog();
    _dog.tag.name = dog.tag.name;
    _dog.tag.material = dog.tag.material;
    return _dog;
}

myDog = new Dog();
yourDog = copyDog(myDog);

因此:

> myDog == yourDog;
false

这不是唯一的方法,在很大程度上取决于您的实施以及您希望复制的深度。