전에 만든 코드 복습 -리덕스 툴킷

piper ·2024년 4월 18일
0

Java Script 

목록 보기
22/22

갑자기 리덕스 툴킷에서 만든 리듀서 함수를 보았다.
여기서 unshift는 기존 원본 배열을 직접 변형하지만
filter는 원본 배열은 유지하면서 새로운 배열을 만든다.
따라서 status.todos의 변수에 재할당을 해야 filter 메서도로 새로 만든 배열이 할당되고
의도한대로 작동한다.

const todoSlice = createSlice({
  name: "todoTask",
  initialState: {
    todos: [],
  },
  reducers: {
    add(state, action) {
      const newTodo = action.payload;
      state.todos.unshift({
        id: uuidv4(),
        title: newTodo.title,
        date: newTodo.date,
        file: newTodo.file,
        category: newTodo.category,
        todo: newTodo.todo,
        done: false,
      });
    },
    delete(state, action) {
      state.todos = state.todos.filter((item) => item.id !== action.payload);
    },
    status(state, action) {
      const todoToUpdate = state.todos.find((item) => item.id === action.payload);
      if (todoToUpdate) {
        todoToUpdate.done = !todoToUpdate.done;
      }
    },
  },
});
profile
연습일지

0개의 댓글