Skip to content

Instantly share code, notes, and snippets.

@vcapretz
Created January 21, 2020 13:49
Show Gist options
  • Save vcapretz/008766eb466261938108d149b5599d09 to your computer and use it in GitHub Desktop.
Save vcapretz/008766eb466261938108d149b5599d09 to your computer and use it in GitHub Desktop.
// todos.js
import { createSlice } from '@reduxjs/toolkit'
const todosSlice = createSlice({
name: 'todos',
initialState: [],
reducers: {
addTodo(state, action) {
const { id, text } = action.payload
state.push({ id, text, completed: false })
},
toggleTodo(state, action) {
const todo = state.find(todo => todo.id === action.payload)
if (todo) {
todo.completed = !todo.completed
}
}
}
})
export const { addTodo, toggleTodo } = todosSlice.actions
export default todosSlice.reducer
// visibilityFilter.js
const filtersSlice = createSlice({
name: 'visibilityFilters',
initialState: 'SHOW_ALL',
reducers: {
setVisibilityFilter(state, action) {
return action.payload
}
}
})
export const { setVisibilityFilter } = filtersSlice.actions
export default filtersSlice.reducer
// rootReducer.js
import { combineReducers } from '@reduxjs/toolkit'
import todosReducer from './todos'
import visibilityFilterReducer from './visibilityFilter'
export default combineReducers({
todos: todosReducer,
visibilityFilter: visibilityFilterReducer
})
// store.js
import { configureStore } from '@reduxjs/toolkit'
import rootReducer from './rootReducer.js'
const store = configureStore({ reducer: rootReducer })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment