今天有个bug找了好久,没想到是对象解构出现的问题。
需求是 我想把state对象中的current更新+1,因此我先将state对象中的current解构出来,并对其进行赋值+1的操作。
错误代码提出来如下(只提取了与文章有关的部分):
const state = {
current: -1, //标记行为的索引号,以完成上一步下一步
}
const registry = (commond) => {
let { current } = state
current = current + 1
}
}
但是如上操作后,却没效果。后来发现是对解构的基本规则都没清楚。
错误原因:
let { current } = state
//这一步实际上是又声明了个current变量,
//让其与state中的current值相等。并不是将state中的current提取出来的意思
//该current与state对象中的current是两个人!!!
因此我再对解构出的current赋值,并不会影响state中的current的值,所以没效果。
正确是:
const state = {
current: -1, //标记行为的索引号,以完成上一步下一步
}
const registry = (commond) => {
let { current } = state
state.current = current + 1
}
}