
How to fix ReferenceError: Cannot access before
How to fix ReferenceError: Cannot access before initialization in JavaScript - LearnShareIT
If you are getting the ReferenceError: Cannot access before initialization in Javascript and don't know how to fix it, please read this article. It's helpful for you.
learnshareit.com

initialization in JavaScript - LearnShareIT
How to fix ReferenceError: Cannot access before initialization in JavaScript - LearnShareIT
If you are getting the ReferenceError: Cannot access before initialization in Javascript and don't know how to fix it, please read this article. It's helpful for you.
learnshareit.com
객체의 totalcost를 위쪽에 사용하는데 아래 let으로 섢언했었다. 이를 var로 바꿔도 되지만, 그보단 위쪽에서 let으로 다시 선언하는 방법을 택했다.
------------------------------
추가적으로 useEffect를 쓰는 과정에서 다른 분이 질문을 해서, 코드리뷰를 같이 했었다.
디테일 페이지 코드 추출
const Detail = () => {
const dispatch = useDispatch();
const todo = useSelector((state) => state.todos.todo);
const { id } = useParams();
const navigate = useNavigate();
useEffect(() => {
dispatch(getTodoByID(id));
}, [dispatch, id]);
}
모듈에 있는 코드 추출

case GET_TODO_BY_ID:
return {
...state,
todo: state.todos.find((todo) => {
return todo.id === action.payload;
}),
};
----------------------------
이렇게 useEffect를 통해서 해당 서버에 있는 id와 같은 todos내의 todos속 객체를 todo에 저장하는 방식이었다.
하지만 질문하신 분이 todo를 지우고, 질문하셨고 해당 코드에 대한 정확한 분석을 하지 못하고 useSelector에서 todos에 있는 값을 불러오고, GET_TODO_BY_ID에서 return을 {state, todos:~~} 로 바꾸었다.
이 경우 디테일에서 출력은 되지만, 출력이 된 이후에는 기존에 있는 todos값들이 사라져서 , home으로 갔을 때 페이지가 뜨지 않는다.
하지만 에러메시지는 홈페이지에 사용할 아이디가 없다고 떴다.
꺠달음점 :
1. 코드를 수정할 때, 좀 더 자세히 리뷰하고 하자.
2. 너무 콘솔에 뜨는 에러위치에만 의존하지말고, 어떤 기능에 문제가 있는지를 생각하면서 수정하자.
'TIL > 항해산 TIL' 카테고리의 다른 글
| TIL 34일차 항해 심화주차 React강의 흐름 정리 (툴킷 ,Json server, axios, Thunk, react hook (0) | 2023.01.07 |
|---|---|
| TIL 33일차 axios 로 (post, delete ,patch)이후 랜더링하기 (0) | 2023.01.06 |
| TIL 31일차 todolist로 새 기능 추가하기 (0) | 2023.01.03 |
| TIL 30일차 -2 nano ID (0) | 2023.01.03 |
| TIL 30일차 styled component 사용시 인풋 오류 (0) | 2023.01.03 |