generator-rrrw
Version:
react,redux,react-redux-router,webpack,babel,es6,autoprefixer,HMR,css-module
53 lines (44 loc) • 1.13 kB
JavaScript
import { handleActions } from 'redux-actions'
const initialState = [{
text: 'Use Redux',
completed: false,
id: 0
}]
export default handleActions({
'add todo' (state, action) {
return [{
id: state.reduce((maxId, todo) => Math.max(todo.id, maxId), -1) + 1,
completed: false,
text: action.payload
}, ...state]
},
'delete todo' (state, action) {
return state.filter(todo => todo.id !== action.payload )
},
'edit todo' (state, action) {
return state.map(todo => {
return todo.id === action.payload.id
? { ...todo, text: action.payload.text }
: todo
})
},
'complete todo' (state, action) {
return state.map(todo => {
return todo.id === action.payload
? { ...todo, completed: !todo.completed }
: todo
})
},
'complete all' (state) {
const areAllMarked = state.every(todo => todo.completed)
return state.map(todo => {
return {
...todo,
completed: !areAllMarked
}
})
},
'clear complete' (state) {
return state.filter(todo => todo.completed === false)
}
}, initialState)