Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.6.0/redux.js"></script>
</head>
<body>
  <div id="root">
  </div>
</body>
</html>
 
function reducer(state, action) {
  switch(action.type) {
    case 'TODO_ADD' : {
      return applyAddTodo(state, action);
    }
    case 'TODO_TOGGLE' : {
      return applyToggleTodo(state, action);
    }
    default : return state;
  }
}
function applyAddTodo(state, action) {
  return state.concat(action.todo);
}
function applyToggleTodo(state, action) {
  return state.map(todo =>
    todo.id === action.todo.id
      ? Object.assign({}, todo, { completed: !todo.completed })
      : todo
  );
}
const store = Redux.createStore(reducer, []);
console.log('initial state:');
console.log(store.getState());
const unsubscribe = store.subscribe(() => {
  console.log('store update, current state:');
  console.log(store.getState());
});
store.dispatch({
  type: 'TODO_ADD',
  todo: { id: '0', name: 'learn redux', completed: false },
});
store.dispatch({
  type: 'TODO_ADD',
  todo: { id: '1', name: 'learn mobx', completed: false },
});
store.dispatch({
  type: 'TODO_TOGGLE',
  todo: { id: '0' },
});
unsubscribe();
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
rwieruchpro
0viewers