[英]Best way to handle multiple async calls and scope updates in AngularJS
[英]What's the best way to batch state updates from async calls in React?
我從這篇文章了解到,React 不會自動批處理 state 更新,如果事件non-react
的,即 setTimeout、Promise 調用。 (簡而言之,來自 Web API 的任何事件。)
這不同於react-based
事件,例如來自 onClick 事件(等)的事件,這些事件通過對限制渲染的反應進行批處理。 這在這個答案中得到了很好的說明,它基本上證明了雖然這只會觸發一個渲染:
function handleClickWithoutPromise() {
setA('aa');
setB('bb');
}
這將觸發兩個:
function handleClickWithPromise() {
Promise.resolve().then(() => {
setA('aa');
setB('bb');
});
}
對我來說這是有問題的,因為在我的第一個頁面加載時,我向后端發送了一個請求,並接收了用於更新大量離散 state 對象的各種數據。 這會觸發十幾個重新渲染,這顯然不是最優的。
不同的帖子提供了一些選項,但希望獲得一些專家指導,了解最佳實踐:
ReactDOM.unstable_batchedUpdates(() => {... })
因此,以防萬一沒有更好的答案出現,我 在 Medium 上找到了這篇文章,它展示了一個非常好的、簡單的ReactDOM.unstable_batchedUpdates(() => {... })
工作示例。 (您必須向下滾動到“如何強制批處理?”部分)。
作者還補充說:
盡管這個 function 被認為是“不穩定的”,但 React 顯然打算在以下版本中解決這個問題。
“在未來的版本中(可能是 React 17 和更高版本),React 將默認批處理所有更新,因此您不必考慮這一點” ,根據 Dan Abramov 的說法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.