作者:想太多先生的微博 | 来源:互联网 | 2023-09-09 08:27
我的目标是通过state
方法来更改this.setState
对象,但是有些事情让我感到困惑。
首先,我创建了一个名为newCount
的对象常量,给出了一个新的key: value
对数据并返回了newCount
,但是浏览器并没有增加count
的值我所期望的。
这是代码:
this.setState(prevState => {
var newCount = {
count: prevState.count + 1
} // It won't increase. Just keeps showing 1.
return {
newCount
}
})
但是当我尝试直接像这样返回值时,它会起作用:
this.setState(prevState => {
return {
count: prevState.count + 1
} // It goes working.
})
这两个代码块有什么区别?
第一个代码示例在状态newCount
内创建了一个新字段:
return {
newCount,// es6 shorthand - equals to `newCount: newCount`
}
第二个示例正常工作,因为您要更新正确的count
字段。
如果您想同时使用这两种方法,只需添加正确的字段名称:
return {
count: prevState.count + 1,// or `count: newCount.count`
}
有关对象初始化的更多详细信息:https://developer.mozilla.org/en-US/docs/Web/Javascript/Reference/Operators/Object_initializer