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);
网友评论