Skip to content

Instantly share code, notes, and snippets.

@etienne-dldc
Created September 10, 2017 09:38
Show Gist options
  • Save etienne-dldc/7018042ce4512ff0c3ace31dec772527 to your computer and use it in GitHub Desktop.
Save etienne-dldc/7018042ce4512ff0c3ace31dec772527 to your computer and use it in GitHub Desktop.
17 - Redux
<div id="logger" style="position: fixed; left: 10px; top: 0px"></div>
// Logger: not part of the demo
var loggerEl = document.getElementById('logger');
function log(text) {
const line = document.createElement("span");
line.innerText = text;
loggerEl.appendChild(line);
loggerEl.appendChild(document.createElement("br"));
}
///////
// reducer
function counterReducer(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
// create the store
let store = Redux.createStore(counterReducer)
// subscribe
store.subscribe(() =>
log('state : ' + store.getState())
)
// We can then change the state by dispatching actions
store.dispatch({ type: 'INCREMENT' })
store.dispatch({ type: 'INCREMENT' })
store.dispatch({ type: 'DECREMENT' })
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.7.2/redux.min.js"></script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment