我希望能够复制/克隆存储状态并在本地修改它。如何复制对象并摆脱只读属性?
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)
一种方法是您可以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
只进行卷影复制。