[英]Why React setState can be asynchronous?
我知道setState
可以是同步的或異步的:
setState()
不會立即改變this.state,但會創建掛起狀態轉換。 調用此方法后訪問this.state
可能會返回現有值。無法保證對
setState
的調用進行同步操作,並且可以對調用進行批處理以提高性能。
是的,我理解該函數執行一些事情:
但我想弄清楚的是為什么這有時是同步的,有時是異步的? 現場背后會發生什么? 為什么不能總是同步?
謝謝。
您的狀態更改可能來自許多來源(取決於您的應用程序),並且組件中的每個狀態更改都安排在隊列中。 因此,如果在組件中執行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.