redux流程
- view直接触发dispatch
- 将action发送到reducer中后,根节点上会更新props,改变全局view
redux概念理解
store相关
- redux中的store是通过createStore方法创建的,该方法接收两个参数reducer函数和初始化的数据(currentState),从而形成一颗状态树
- createStore方法调用时传入的reducer方法会在store的dispatch被调用的时候,被调用,接收store中的state和action,根据业务逻辑(即reducer方法)返回新的state
- store含有四个方法,
subscribe
、dispatch
、getState
和replaceReducer
可参考官方文档(翻译版)
react-redux概念理解
- 提供Provider组件,可以将从createStore返回的store放入context中,使子集可以获取到store并进行操作
<Provider store={store}>
<App /> </Provider>
提供connect方法
- 将原始根节点包装在Connect下,在Connect中的state存储不可变对象,并将state对象中的props和store中的dispatch函数传递给原始根节点。
- Connect在componentDidMount中,给store添加listener方法(handleChange),每当store中的dispatch被调用时执行handleChange;handleChange会去修改state中的porps,使原始根节点重新render
- 方法调用
connect(mapStateToProps,mapDispatchToProps,mergeToProps)(App);
可参考官方文档(翻译版)
Middleware理解
文档中的例子
const createStoreWithMiddleware = applyMiddleware( thunkMiddleware,loggerMiddleware )(createStore); store = createStoreWithMiddleware(rootReducer,initialState);
可以看作
middleware1(middleware2(middleware3(store.dispatch)))(action)
,因此每个middleware中的next是一个接收action的函数(middleware定义时有体现),在最后一个middleware中,next函数就是store.dispatch,这样action就在middleware中传递下去