Sample for demo.
“REDUX TECH”!!!
/* * Author, Copyright: Oleg Borodin <onborodin@gmail.com> */ function createStore(reducer, initialState) { let state = initialState let listener = () => {} return { dispatch: (action, payload) => { state = reducer(state, action, payload) listener(state) }, getState: () => { return state }, subscribe: (newListener) => { listener = newListener; } } } function reducer(state, action, payload) { switch (action) { case "add": return { ...state, counter: state.counter + payload } case "sub": return { ...state, counter: state.counter - payload } default: return state } } let data = { counter: 1, name: 'user' } function subscriber(state) { console.log(state) } let store = createStore(reducer, data) store.subscribe(subscriber) store.dispatch("add", 2) store.dispatch("add", 2) store.dispatch("sub", 1) console.log(store.getState())
$ node ./redux.js
{ counter: 3, name: 'user' }
{ counter: 5, name: 'user' }
{ counter: 4, name: 'user' }
{ counter: 4, name: 'user' }