簡體   English   中英

為什么React setState可以是異步的?

[英]Why React setState can be asynchronous?

我知道setState可以是同步的或異步的:

setState()不會立即改變this.state,但會創建掛起狀態轉換。 調用此方法后訪問this.state可能會返回現有值。

無法保證對setState的調用進行同步操作,並且可以對調用進行批處理以提高性能。

是的,我理解該函數執行一些事情:

  • 更新狀態中的實際值
  • 使用新的狀態值根據需要更新虛擬和真實DOM

但我想弄清楚的是為什么這有時是同步的,有時是異步的? 現場背后會發生什么? 為什么不能總是同步?

謝謝。

您的狀態更改可能來自許多來源(取決於您的應用程序),並且組件中的每個狀態更改都安排在隊列中。 因此,如果在組件中執行this.setState(),那么它將等待,並且可以解析此組件的所有其他可能的setStates。 當你執行類似this.setState({value:this.state.value + 1})之類的操作並且期望結果時,可能會發生這種情況然后這個操作正在等待解決,如果在那個等待期間另一個操作os狀態發生了變化那么我們將在最新的this.stare.value上運行,導致意想不到的回報。 通常,當我處理基於先前狀態的狀態更改時,我會以這種方式改變狀態:this.setState((prevState)=> prevState.value + 1)這意味着我正在調整狀態我目前根據這個記憶狀態進行修改,而不是依賴於this.state。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM