• Blogs (9)
    • 📱 236 - 992 - 3846

      📧 jxjwilliam@gmail.com

    • Version: ‍🚀 1.1.0
  • Redux combineReducer, createStore quick implementation

    Blogs20172017-02-22


    redux combineReducer, createStore simple implementation

    const combineReducer = (reducers) => {
      return (state, action) => {
        return Object.keys(reducers).reduce((nextState, key) => {
    
          nextState[key] = reducers[key](state[key], action);
    
          return nextState;
        }, {});
      }
    }
    //to call:
    const todoApp = combineReducer({
      todos,
      visibilityFilter
    });
    
    
    const createStore = (reducer) => {
      let state;
      let listeners = [];
      const getState = () => state;
      const dispatch = (action) => {
        state = reducer(state, action);
        listeners.forEach(listener => listener());
      };
    
      const subscribe = (listener) => {
        listeners.push(listener);
        return () => {
          listeners = listeners.filter(l => l !== listener);
        };
      };
    
      dispatch({});
      return { getState, dispatch, subscribe };
    };
    //to call:
    const store = createStore(counter);