我見過的人使用setState
方式:在React中處理組件狀態的正確方法是什麼?
this.setState({enteredlocation: newLocation});
目前我正在寫的狀態是這樣的:
this.state.id.push({"no" : length , "location": this.state.enteredlocation});
什麼是更新狀態的正確方法?
我也打算在稍後整合Redux,但現在,我試圖部分理解部分。
我見過的人使用setState
方式:在React中處理組件狀態的正確方法是什麼?
this.setState({enteredlocation: newLocation});
目前我正在寫的狀態是這樣的:
this.state.id.push({"no" : length , "location": this.state.enteredlocation});
什麼是更新狀態的正確方法?
我也打算在稍後整合Redux,但現在,我試圖部分理解部分。
取而代之的是:
this.state.id.push({"no" : length , "location": this.state.enteredlocation});
...做的事:
this.setState({
id: this.state.id.concat({
"no": length,
"location": this.state.enteredlocation
})
});
這將確保id
是一個新的數組引用,而不是與不同的內容相同的參考。
我見過有人用Object.assign()來組合新對象。它使用'concat'時有什麼不同? –
'concat'對於數組更簡單; Object.assign是更新對象的好方法。或者使用傳播(更簡單):'{... this.state.origObj,newProp:'value'}' – Jacob
正確的方法是使用'this.setState'和** NEVER **直接改變'this.state'對象。順便說一句,我敢肯定'this.state.id.push()'不會觸發組件的重新渲染,所以它根本不明顯。 – zerkms
是的,它使用'this.state.id.push()'時不會重新渲染,這讓我感到困惑。有沒有解釋呢?我想我會使用'this.setState' –
「有解釋嗎?」 ---確定:反應並不知道你剛剛做出的改變。 – zerkms