1. 程式人生 > >深入剖析setState同步非同步機制

深入剖析setState同步非同步機制

# 關於 setState setState 的更新是同步還是非同步,一直是人們津津樂道的話題。不過,實際上如果我們需要用到更新後的狀態值,並不需要強依賴其同步/非同步更新機制。在類元件中,我們可以通過`this.setState`的第二引數、`componentDidMount`、`componentDidUpdate`等手段來取得更新後的值;而在函式式元件中,則可以通過`useEffect`來獲取更新後的狀態。所以這個問題,其實有點無聊。 不過,既然大家都這麼樂於討論,今天我們就係統地梳理一下這個問題,主要分為兩方面來說: - 類元件(`class-component`)的更新機制 - 函式式元件(`function-component`)的更新機制 # 類元件中的 this.setState 在類元件中,這個問題的答案是多樣的,首先拋第一個結論: - **在`legacy`模式中,更新可能為同步,也可能為非同步;** - **在`concurrent`模式中,一定是非同步。** ## 問題一、legacy 模式和 concurrent 模式是什麼鬼? - 通過`ReactDOM