setState()
會對一個組件的 state
對象安排一次更新。當 state 改變了,該組件就會重新渲染。
props
(“properties” 的縮寫)和 state
都是普通的 JavaScript 對象。它們都是用來保存信息的,這些信息可以控制組件的渲染輸出,而它們的一個重要的不同點就是:props
是傳遞給組件的(類似於函數的形參),而 state
是在組件內被組件自己管理的(類似於在一個函數內聲明的變量)。
我應該如何更新那些依賴於當前的 state 的 state 呢?
調用 setState
其實是異步的 —— 不要指望在調用 setState
之后,this.state
會立即映射為新的值。如果你需要基於當前的 state 來計算出新的值,那你應該傳遞一個函數,而不是一個對象
給 setState
傳遞一個對象與傳遞一個函數的區別是什么?
傳遞一個函數可以讓你在函數內訪問到當前的 state 的值。因為 setState
的調用是分批的,所以你可以鏈式地進行更新,並確保它們是一個建立在另一個之上的
為什么 React 不同步地更新 this.state
?
開始重新渲染之前,React 會有意地進行“等待”,直到所有在組件的事件處理函數內調用的 setState()
完成之后。這樣可以通過避免不必要的重新渲染來提升性能。
參考:https://react.docschina.org/docs/faq-state.html#what-is-the-difference-between-state-and-props