[英]Difference between returning object literal vs raw values directly in this.setState? (React.JS)
我的目標是通過this.setState
方法更改state
對象,但有件事讓我感到困惑。
首先,我創建了一個名為newCount
的對象字面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.
})
這兩個代碼塊有什么區別?
第一個代碼示例在 state 中創建了一個名為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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.