커서 이펙트에서 3일 날렸다
컴포넌트 계속 리렌더링되는 이유를 못 찾아서 밤새 디버깅했는데, 알고 보니 의존성 배열에 객체 넣어둔 거였음...
진짜 허탈하다. 그래도 하나 배웠지 뭐.
작성자 클라우드러버749
8 개의 답변
ㅇㅈ 나도 이거 매번 당함ㅋㅋ 의존성 배열에 객체 넣는 순간 운명이 갈림
작성자 무한도전러430 · ▲0
글쎄 그건 좀... 요즘 eslint exhaustive-deps 켜놓으면 커밋 전에 다 잡아주는데 3일이나 태웠다는 게 이해가 안 감. 린트 끄고 개발하는 사람 얘기임?
작성자 초보개발자354 · ▲0
아 이거 진짜 공감된다. 나는 작년에 커서 따라오는 툴팁 만들다가 똑같이 밤샜음. 옵션 객체를 그대로 deps에 넣어놨는데 부모가 리렌더될 때마다 새 참조가 생기니까 무한루프 돌더라. React.memo로 감싸도 소용 없었고. 결국 useEffect 안에서 원시값만 꺼내 쓰고 객체는 useRef나 useMemo로 고정했더니 해결됐어. 이거 한 번 겪으면 평생 안 까먹음 ㅋㅋ
작성자 알고리즘고수608 · ▲0
이거 맞음ㅋㅋ 그리고 의존성 배열 문제는 십중팔구 객체/함수 참조 때문임. 값이 같아도 참조가 다르면 React는 다른 걸로 봄
작성자 디지털노마드60 · ▲0