众所周知redux是个状态管理工具库。很多人会将其误解为react专有的状态管理工具,这样的话你就错了。事实上,redux是个完全独立的状态管理工具。可以运用于很多框架和库中,其实vue的vuex也是参考redux来实现的,只不过是强关联于vue的响应式也只适配于vue。
const ADD_NUMBER = 'ADD_NUMBER';
const @@REDUX_INIT = '@@REDUX_INIT';
let initState = {number: 0,address:'shanghai'};
function reducer(state= initState, action) {
swicth(action.type) {
case ADD_NUMBER:
return {
...state,
number: action.payload
}
default:
return state;
}
}
funxtion createStore(reducer, initState) {
let state = initState;
let listeners = [];
function getState() {
return state;
}
function dispatch(action) {
state = reducer(state, action);
listeners.forEach(listener => listener());
return action;
}
dispatch({type: @@REDUX_INIT});
function subscribe(listener) {
listeners.push(listener)
return function() {
i = listeners.indexOf(listener);
listeners.splice(i, 1)
}
}
return {
getState,
dispatch,
subscribe
}
}
example:
let state = {
address: 'shanghai',
number: 1
}
let store = createStore(reducer,state);
console.log(store.getState());