redux-simple-tutorial icon indicating copy to clipboard operation
redux-simple-tutorial copied to clipboard

文末enhancer执行顺序图

Open wenbin-ding opened this issue 7 years ago • 0 comments

原 createStore ———— │ ↓ return enhancer1(createStore)(reducer, preloadedState, enhancer2) | ├———————→ createStore 增强版 1 │ ↓ return enhancer2(createStore1)(reducer, preloadedState, enhancer3) | ├———————————→ createStore 增强版 1+2 │ ↓ return enhancer3(createStore1+2)(reducer, preloadedState, applyMiddleware(m1,m2,m3)) | ├————————————————————→ createStore 增强版 1+2+3 │ ↓ return appleMiddleware(m1,m2,m3)(createStore1+2+3)(reducer, preloadedState) | ├——————————————————————————————————→ 生成最终增强版 store

感觉图中enhancer的第二次调用应该去掉吧。因为createStore调用的是compose返回的函数(称func),func被调用让enhancer被串联执行,在这个过程中,enhancer应该只有一次调用,func(createStore) => enhancer(createStore),后面的第二次调用应该是所有enhaner执行完成,返回最终版store,在原始createStore内,执行finalCreateStore(reducer, preloadedState)

wenbin-ding avatar Mar 06 '18 08:03 wenbin-ding