1. 程式人生 > 實用技巧 >state 和 props 之間的區別

state 和 props 之間的區別

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