Skip to content

Instantly share code, notes, and snippets.

@eva0919
Created January 2, 2016 14:39
Show Gist options
  • Save eva0919/dc867a2224f818e2be4b to your computer and use it in GitHub Desktop.
Save eva0919/dc867a2224f818e2be4b to your computer and use it in GitHub Desktop.
const todo = ( state, action) =>{
switch (action.type) {
case 'ADD_TODO':
return {
id: action.id,
text: action.text,
completed: false
};
case 'TOGGLE_TODO':
if (state.id !== action.id) {
return state;
}
return {
...state,
completed: !state.completed
};
default:
return state;
}
};
const todos = ( state = [], action) =>{
switch (action.type) {
case 'ADD_TODO':
return [
...state,
todo( undefined, action )
];
case 'TOGGLE_TODO':
return state.map(t => todo( t, action) );
default:
return state;
}
};
const visibilityFilter = (
state = 'SHOW_ALL',
action
) =>{
switch (action.type){
case 'SET_VISIBILITY_FILTER':
return action.filter;
default:
return state;
}
};
const todoApp = ( state={}, action ) =>{
return {
todos: todos( state.todos, action),
visibilityFilter: visibilityFilter(state.visibilityFilter, action)
};
};
const { createStore } =Redux;
const store = createStore(todoApp);
console.log('Current State');
console.log( store.getState() );
console.log('Dispatching ADD_TODO');
store.dispatch({
type:'ADD_TODO',
id:0,
text:'Go Shopping'
});
console.log('Current State');
console.log( store.getState() );
console.log('Dispatching ADD_TODO');
store.dispatch({
type:'SET_VISIBILITY_FILTER',
filter:'SHOW_COMPLETED'
});
console.log('Current State');
console.log( store.getState() );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment