Redux createStore 方法的實現

/**
 * createStore方法的實現方式
 */
const createStore = (reducer) => {

  let state;
  let listeners = [];

  const getState = () => state;

  const dispatch = (action) => {
    // Store 自動調用 Reducer,並且傳入兩個參數:當前 State 和收到的 Action。
    state = reducer(state, action);
    // State 一旦有變化,Store 就會調用監聽函數。( 1、如下寫法並未監控state的變化 )
    listeners.forEach(listener => listener());
  };

  const subscribe = (listener) => {
    // 設置監聽函數
    listeners.push(listener);
    // 返回解除監聽該函數的方法
    return () => {
      listeners = listeners.filter(l => l !== listener);
    }
  
  };

  dispatch({}); // 2

  // createStore():store --> 3個API如下
  return { getState, dispatch, subscribe };
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章