state 和 props 之間的區別
阿新 • • 發佈:2020-07-01
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