react-redux,是对redux流程的一种封装,使其可以适配与react的代码结构。
react-redux首先提供了一个Provider,可以将从createStore返回的store放入context中,使子集可以获取到store并进行操作;
<Provider store={store}>
{() => <App />}
</Provider>
其次react-redux提供了connect方法,将原始根节点包装在Connect下,在Connect中的state存储不可变对象,并将state对象中的props和store中的dispatch函数传递给原始根节点;
Connect在componentDidMount中,给store添加listener方法(handleChange),每当store中的dispatch被调用时执行handleChange;handleChange会去修改state中的porps,使原始根节点重新render;并且Connect已经在shouldComponentUpdate实现了PureRender功能。
handleChange更新state中的props逻辑主要由3个函数构成,这3个函数都由connect方法传入;
connect(mapStateToProps, mapDispatchToProps, mergeToProps)(App);
第一个函数接收store中state和props,使页面可以根据当前的store中state和props返回新的**stateProps**;
第二个函数接收store中的dispatch和props,使页面可以复写dispatch方法,返回新的**dispatchProps**;
react-redux首先提供了一个Provider,可以将从createStore返回的store放入context中,使子集可以获取到store并进行操作;
<Provider store={store}>
{() => <App />}
</Provider>
其次react-redux提供了connect方法,将原始根节点包装在Connect下,在Connect中的state存储不可变对象,并将state对象中的props和store中的dispatch函数传递给原始根节点;
Connect在componentDidMount中,给store添加listener方法(handleChange),每当store中的dispatch被调用时执行handleChange;handleChange会去修改state中的porps,使原始根节点重新render;并且Connect已经在shouldComponentUpdate实现了PureRender功能。
handleChange更新state中的props逻辑主要由3个函数构成,这3个函数都由connect方法传入;
connect(mapStateToProps, mapDispatchToProps, mergeToProps)(App);
第一个函数接收store中state和props,使页面可以根据当前的store中state和props返回新的**stateProps**;
第二个函数接收store中的dispatch和props,使页面可以复写dispatch方法,返回新的**dispatchProps**;
第三个函数接收前2个函数生成的**stateProps**和**dispatchProps**,在加上**原始的props**,合并成新的props,并传给原始根节点的props。
流程图