当我克隆/复制对象时,如何删除对象的只读属性?

Hyr*_*ial 5 javascript redux

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

let a = store.getState();
console.log(a.property) // 'property'
let b = copy(a)
b.property = 'newProperty';
console.log(b.property) // 'newProperty'
Run Code Online (Sandbox Code Playgroud)

pra*_*-me 6

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

喜欢:

const state = store.getState()

const newState = {...state}
Run Code Online (Sandbox Code Playgroud)

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

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

像这样。

const state = store.getState();

const newState = JSON.parse(JSON.stringify(state));
Run Code Online (Sandbox Code Playgroud)

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

我建议在这里使用,JSON.stringify因为您的状态中可以有多层对象。并且spread只进行卷影复制。