在使用了combineReducers的場景下,要注意reducers里的state初始化處理,否則到combineReducers函數過程中會拋出異常,原因是combineReducers內部進行了每個reducer斷言。
跟蹤源碼可知原理如下:
繼續debug,進入assertReducerShape
可見,在此處,對每個rducer進行斷言處理:傳入'undefined'的state和在buisniess type之外的actionType,使每個reducer函數走default分支,返回最終值,如果該值為undefined則認為你的reducer斷言失敗,是非安全的。
因此,在使用了combinedReducer的情況下,要注意reducer的初始值處理:
This is the end.