根据另一个问题的说法:
传播运算符类似于Object.assign,并没有深度克隆 宾语。 JSON的工作原因是因为你创建了一个 然而,整个新对象将通过严格的相等检查 所有组件都会不必要地更新,因为没有任何东西会通过 现在进行严格的平等检查。
Object.assign({},... prevState,... newState)将创建一个新的 顶级对象,但不会为任何对象创建新对象 嵌套在prevState或newState中。但是,你必须小心 更新嵌套对象,以避免不必要的重新渲染。这可以得到 对于深层嵌套的对象和数组来说很棘手。
我的问题是......当我们需要返回具有属性包含数组的对象的新版本时,我们必须做什么?例如:
const foo = {
myArray: [1, 2, 3],
name: 'Hello world'
};
const clonedObj = { ...foo }
这将创建一个新对象,其中包含名称及其内容的副本,myArray键的副本,但不包含[1,2,3]的副本。
JSON.parse + JSON.stringify可以做到这一点,但看起来并不干净。
我有什么选择?
谢谢