首页 > 解决方案 > 克隆/复制对象时如何删除对象的只读属性?

问题描述

我希望能够复制/克隆存储状态并在本地进行修改。如何复制对象并摆脱只读属性?

let a = store.getState();
console.log(a.property) // 'property'
let b = copy(a)
b.property = 'newProperty';
console.log(b.property) // 'newProperty'

标签: javascriptredux

解决方案


一种方法是您可以state从 store 中获取,然后将其传播到一个新对象中。

像:

const state = store.getState()

const newState = {...state}

现在,您可以修改state对象。

但是,如果您有多个处于状态的对象,请使用JSON.stringify然后使用JSON.parse来解析它。

像这样。

const state = store.getState();

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

它将创建一个全新的克隆,现在您可以修改状态。

我建议在这里使用JSON.stringify,因为您可以在您的状态下拥有多级对象。并且spread只做卷影副本。


推荐阅读