lewenweijia / notes

🏊 dive dive diving
1 stars 0 forks source link

简易实现: redux #8

Open lewenweijia opened 4 years ago

lewenweijia commented 4 years ago
function createStore(initReducer, initState = {}, enhancer) {
  if (enhancer) {
    return enhancer(createStore)(initReducer, initState);
  }

  let reducer = initReducer;
  let state = initReducer(initState, { type: '__INIT__' });
  let subscribers = [];

  return {
    getState: () => state;
    dispatch: action => {
      state = reducer(state, action);
      subscribers.forEach(s => s());
    },
    subscribe: listener => {
      subscribers.push(listener);
      return () =>
    void subscribers = subscribers.filter(l => l !== listener)
    }
  }
}
lewenweijia commented 4 years ago

MICS

也就是redux自身提供的applyMiddleware( )本身就是产出一个针对createStore的enhancer的啊 还有细化reducer子树的combineReducers工具

applyMiddleware <-- 依赖到compose工具函数的哦

问题的权衡点就是, 子节点需不需要意识到其的啊 bindActionCreators? --> bindActionCreators with Dispatch

redux三大工具api啊: bindActionCreators combineReducers: 帮助细化子树的呢 compose: 1. 一般compose函数; 2. enhancer可以拼凑成compose(enahncer1, enhancers)的形式的哦