주요 일정
2월 16일(목) 10시-14시 숙련주차 퀴즈
2월 16일(목) ~21시 개인 숙련주차 과제 제출(todo lv.2)
2월 16일(목) ~21시 개인 숙련주차 과제 제출(todo lv.3)
2월 16일(목) ~21시 팀 과제 노션 작성 제출
리듀서 안의 초기값을 지정, 이때 초기 스테이트의 값은 없어도 되지만 아래 액션객체의 액션을 지정할때 map, filter와 같은 함수를 사용중이므로 타입은 지정되어야 한다.
따라서 빈배열 형태로 넣어주어야 한다. todos : []
const initialState = {
todos : [
{
id : 'id1',
title : "react 공부하기",
content : "열심히하기!",
isDone : false
},
{
id : 'id2',
title : "redux 공부하기",
content : "열심히하기!!",
isDone : true
},
],
todo: {
id: '0',
title : '',
content : '',
isDone : false
},
};
1. 구조분해 할당을 해서 useSelector로 불러오게 됨. 해결
(아마 기존코드는 휴먼에러가 있었던 듯 하다..!)
const todo = useSelector((state) => state.todos.todo);
// useSelector를 사용해 스토어에 저장된 todos에서 todo의 값을 받아온다.
case DETAIL_TODO
에서 return 안의 todo를 todos로 작성했었고, 이름을 변경하니 이전으로 가기가 제대로 작동case DETAIL_TODO :
return {
...state,
todo : state.todos.find((todo) => {
return todo.id === action.payload;
}),
};
find의 경우 해당값을 제외하고 return 하지않기 때문에,
홈화면의 초기 예시값으로 지정해주었던 todos가 아니라 빈배열인 todo에 넣어주어야 한다. todos로 하면 이전값이 없어져서 안보이게 되는 것이다.
글씨가 todo-box안에 담기도록 수정하고 버튼과 같이 클릭할 수 있는 부분의 경우 마우스가 포인터로 바뀌도록 적용해보았다.
휴먼 에러의 경우 다른분들이 찾아주시니 확실히 금방 찾는것 같다고 생각.
예제 코드를 보면서 적용을 해두었지만 아직 이해가 어려운 부분도 분명있기때문에 복습은 필수