Skip to content

Instantly share code, notes, and snippets.

@vasanthk
Forked from bloodyowl/redux-light-example.js
Created June 9, 2016 00:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save vasanthk/4b1de2be72899d47509c7df704c216cc to your computer and use it in GitHub Desktop.
Save vasanthk/4b1de2be72899d47509c7df704c216cc to your computer and use it in GitHub Desktop.
redux in 14 lines of code
const store = createStore((state = { counter: 0 }, action) => {
switch(action.type) {
case "INCREMENT":
return { counter: state.counter + 1 }
case "DECREMENT":
return { counter: state.counter - 1 }
default:
return state
}
})
store.dispatch({ type: "INCREMENT" })
store.dispatch({ type: "INCREMENT" })
console.log(store.getState())
const createStore = (reducer, state = reducer(undefined, { type: "@@INIT" })) => {
const subscribers = new Set()
return {
dispatch: (action) => {
state = reducer(state, action)
subscribers.forEach(func => func())
},
subscribe: (func) => {
subscribers.add(func)
return () => subscribers.delete(func)
},
getState: () => state
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment