createStore函数接受另一个函数作为参数,返回新的生成的Store对象。
import { createStore } from 'redux';
const store = createStore(reducer);
connect是react-redux提供的方法,用于生成容器组件。
import { connect } from 'react-redux';
const App = connect(mapStateToProps,mapDispatchToProps)(Component)
connect方法接受两个参数 mapStateToProps和mapDispatchToProps,分别将state和dispatch转换为props,返回值是一个函数,这个函数接受一个Componet为参数,props属性将添加到Component上,从而生成一个容器组件。
provider主要功能是接受redux的store作为props,通过context对象传递给子孙组件上的connect
ReactDom.render(
<Provider store={store}>
<APP/>
</Provider>,
document.getElementById('root')
);
Provider初始化时,获取到props中的store对象,然后利用getChildContext方法,将外部的store对象放入context对象中,使它的children可以直接访问到context对象中的store。
import {createStore,applyMiddleware} from 'redux';
let store = applyMiddleware(middleware)(createStore)(reducer);
middleware的实现主要是将原来store中的dispatch方法更新成自己想要的dispatch方法。具体实现方法可以参考redux-thunk,redux-promise,logger。