假設在一個函數中,我總是需要設置someState
,並且只需要設置someOtherState
如果condition
爲真。反應保持單setState調用?
它是最好做這樣的:
this.setState({ someState });
if (condition) {
this.setState({ someOtherState });
}
或那樣嗎?
if (condition) {
this.setState({ someState, someOtherState });
} else {
this.setState({ someState });
}
我知道REACT爲優化,確保在快速連續調用setState
通常不會導致重新繪製。但是,這種行爲是有保證的,還是應該由代碼做出這種假設?
例如。假設它在固定的時間間隔內重新渲染,如果第一個setState
在該間隔塊結束之前被調用,那麼第二個setState
將導致重新渲染?
將它肯定進行批處理,即使'setState'被稱爲在不同的功能?即當主循環完成執行時,只有事件循環被刷新,也就是空閒? – Avery235
這取決於您的代碼以及它的運行位置。這主要取決於反應函數的運行順序。但是一般來說,如果這些功能在渲染之前處於生命週期內,那麼它們仍然會進行批處理,如果這樣做合理的話。 –
「在渲染前的生命週期內」 生命週期如何確定? – Avery235