redux原始碼中的isDispatching有什麼用?

時間 2021-05-31 16:18:24

1樓:

阻止花式作死。如通過reducer內dispatch,再次觸發reducer。

--reducer

----dispatch

------reducer

----dispatch

--reducer

reducer完成後更新state,reducer內連續dispatch是無法準確更新state的。

() => next => action => next(action)

2樓:

防止你在dispatching的時候呼叫包括不限於dispatch、getState、replaceReducer等

畢竟在js下要瞎搞太容易了

3樓:賀師俊

我基(cong)本(lai)不用redux,不過根據問題描述來看,這是為了防止重入。這和單執行緒、純函式沒有關係。『之前的 reducer 肯定是已經執行完畢了』只是良好的願望,實際上可能被違反。

而加上這檢查就可以在萬一玩脫了的時候扔個異常給你冷靜一下。你可以把檢查isDispatching理解為一種約束宣告(類似於一些語言裡的assert斷言)。

redux原始碼總共才300行,為什麼會出現成千上萬篇的博文和各種晦澀難懂的理論?

benben 借地請教個問題 看了下原始碼,有個疑問 dispatch每次都會輪詢執行所有的reducer和listener,這麼暴力的嗎?這樣設計的目的是什麼呢 booto 20天後樓主自答,對於這個問題,我起初是懷疑社群過分解讀了,於是自己花了2天時間看了redux相關原始碼,自己改造了redu...

Redis原始碼中hyperloglog結構的實現原理是什麼?

程式設計師歷小冰 具體可以看一下這篇文章 使用者日活月活怎麼統計 Redis HyperLogLog 詳解 基本原理 HyperLogLog 是一種概率資料結構,它使用概率演算法來統計集合的近似基數。而它演算法的最本源則是伯努利過程。伯努利過程就是乙個拋硬幣實驗的過程。拋一枚正常硬幣,落地可能是正面...

STL原始碼剖析中,為什麼空間配置器的union obj最後要跟乙個char陣列?

指北 這個union殺了我很多時間,在這留個記錄說不定以後能幫到別人結合 stl原始碼剖析 p65 p67來看 這東西沒有實際用處,或者說它不必要 要達到用16個鍊錶串起記憶體的效果,用struct node 就夠了因為一旦記憶體塊返回給客戶端,next就沒用了。直接對這塊記憶體覆寫使用即可 猜測寫...