Open su6838354 opened 6 years ago
Redux原理(一):Store实现分析 https://www.cnblogs.com/hhhyaaon/p/5860159.html
react-redux原理分析 http://www.cnblogs.com/hhhyaaon/p/5863408.html
Provider 是为connect 提供store接口用的
Provider 作为一个顶层组件,接收Redux的store作为props,通过context对象传递给子孙组件上的connect;
connect 连接组件和redux 有一个Connect组件,获取Provide 提供的store,从而获取state
react 响应store变化 store作为数据仓库,本身不是组件的state,更新后不会触发组件更新;
dispatch 本身 会做两件很重要的事情:
在Connect包裹组件的时候,会在Connect.componentDidMount 的方法里面调用 redux的subcribe接口,注入onStateChange方法
dispatch的调用--->reducers处理----->listeners执行------->onStateChange执行------>setState({})
redux 接口分析
createStore 创建并初始化整个redux数据管理中心,返回 dispatch,getState,replaceReducer,subscribe等几个方法
dispatch 是一个核心方法,用于发送action,同步采用currentReducer处理action,并执行subscribe订阅的listener;里面会check 不能在reducer中执行dispatch
dispatch源码
return funcs.reduce((a, b) => (...args) => a(b(...args)))
function createThunkMiddleware(extraArgument) { return ({ dispatch, getState }) => next => action => { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); }
}; }
const thunk = createThunkMiddleware(); thunk.withExtraArgument = createThunkMiddleware;
export default thunk;