美文网首页
手写Redux

手写Redux

作者: Ag_fronted | 来源:发表于2021-07-22 15:02 被阅读0次
function createStore() {
  let state;
  let listeners = [];

  function getState() {
    return JSON.parse(JSON.stringify(state));
  }

  function dispatch(action) {
    state = reducer(state, action);
    listeners.forEach((listener) => listener());
  }

  function subscribe(listener) {
    listeners.push(listener);
    return function () {
      listeners = listeners.filter((item) => item != listener);
    };
  }

  dispatch({ type: "@@INIT" });

  return {
    getState,
    dispatch,
    subscribe,
  };
}

let initState = {
  count: 0,
};
function reducer(state = initState, action) {
  switch (action.type) {
    case "ADD_TODO":
      return { ...state, count: action.number };
    default:
      return state;
  }
}
let store = createStore();

let action = {
  type: "ADD_TODO",
  number: 1,
};

let unADD = store.subscribe(function () {
  console.log("状态改变了,现在的state为:");
  console.log(store.getState());
});

store.dispatch(action);

相关文章

网友评论

      本文标题:手写Redux

      本文链接:https://www.haomeiwen.com/subject/zxaemltx.html