Pav*_*dhu 3 javascript immutability babeljs ecmascript-next
我有一个结构简化的对象,如下所示:
state = {
todo: {
1: {text: 'Buy apples'},
2: {text: 'Buy milk'}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我想删除待办事项的不变性,根据 Stack Overflow 上的其他答案,我可以解构待办事项列表:
const idToDelete = 2
let {
[idToDelete]: deleted,
...newTodo
} = state.todo
Run Code Online (Sandbox Code Playgroud)
如果我这样做console.log(newTodo),那么它具有相同的值state.todo,这意味着它没有删除到 id 为 2 的待办事项。如果我 console.log(deleted)然后它返回我想删除的待办事项的内容:{text: 'Buy milk'}。
我知道使用诸如 Immutable.js 之类的库来管理它会更容易一些,但是我想知道为什么解构对象不会删除待办事项项。谢谢。
您将需要 stage-0 来实现您想要的。如果您检查我的代码,您会发现如果您使用字符串来破坏参数,它将按您的预期工作,但如果您使用数字变量,结果将是完整的对象。我想这应该是实现中的一个错误。
const state = {
todo: {
1: {text: 'Buy apples'},
2: {text: 'Buy milk'}
}
}
const id = 1
const { [id]: deleted, ...newTodo } = state.todo
console.log(deleted)
console.log(newTodo)
/********* GOOD EXAMPLE *********/
const { [id.toString()]: del, ...goodNewTodo } = state.todo
console.log(del)
console.log(goodNewTodo)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |