todoSlice.ts 1.01 KiB
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { ToDo } from "../models/ToDo";
const initialState = [] as ToDo[];
const todoSlice = createSlice({
name: "todos",
initialState,
reducers: {
addTodo: {
reducer: (state, action: PayloadAction<ToDo>) => {
state.push(action.payload);
},
prepare: (description: string) => ({
payload: {
id: Date.now(),
description,
completed: false,
} as ToDo,
}),
},
removeTodo(state, action: PayloadAction<number>) {
const index = state.findIndex((todo) => todo.id === action.payload);
state.splice(index, 1);
},
setTodoStatus(
state,
action: PayloadAction<{ completed: boolean; id: number }>
) {
const index = state.findIndex((todo) => todo.id === action.payload.id);
state[index].completed = action.payload.completed;
},
},
});
export const { addTodo, removeTodo, setTodoStatus } = todoSlice.actions;
export default todoSlice.reducer;