javascript - 克隆/复制对象时如何删除对象的只读属性?
问题描述
我希望能够复制/克隆存储状态并在本地进行修改。如何复制对象并摆脱只读属性?
let a = store.getState();
console.log(a.property) // 'property'
let b = copy(a)
b.property = 'newProperty';
console.log(b.property) // 'newProperty'
解决方案
一种方法是您可以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
只做卷影副本。
推荐阅读
- python-3.x - 如何避免“ValueError:未找到分隔符,并且块超出限制”
- kubernetes - 使用 k3s 时 imagePullSecrets 不起作用
- angular - Angular:替换父列表时如何在嵌套组件树中保持组件状态
- javascript - Django,Celery:检索异步生成的文件
- google-bigquery - 获取 BigQuery 表中的唯一标识符
- php - 从 PHP 脚本连接时,docker mysql 连接被拒绝
- windows - 批处理 - 根据初始用户输入请求用户输入
- google-sheets - 是否可以将条件格式分配给 Google 表格中的命名范围?
- javascript - 子组件vue 2.x内的父组件插槽
- javascript - 如何在 Webpack 中动态要求 JSON 文件?