[TIL] React.StrictMode는 두 번 렌더링 한다.
2022. 11. 12. 18:25ㆍReact/고민거리들
사건의 발단은 이렇다.
Three.js를 React에서 다루면서 페인팅이 두 번 되는 느낌이 들었다.
(개인 플젝 뿐만 아니라 처음 배우면서 썼던 Next.js에서도 두 번 그려졌다.)
useEffect에서 렌더링이랑 카메라랑 오브젝트랑 모든 걸 다루기 때문에 repainting이 되는 순간 조명도 두 배! 오브젝트도 두 배! 가 되버린다.
사실 분명 예전에도 여러 번 타는 걸 본 적이 있는데 별 생각이 없었어서 냅뒀었다.
의존성 문제인가 하고 사이드 이펙트를 다 뒤졌는데 결론은 바로 제목에 써놓은 것처럼 React.StrcitMode가 문제였다.
보통 CRA로 만들어지는 프로젝트는 기본적으로 StrictMode로 나오게되니..
뭔가 불안하지만 일단 Index.tsx에 있는 React.StrictMode를 없애보자.
결론은 짠! 이제 한 번만 나오게 된다.
콘솔을 여기저기 찍다보니 App.tsx에 있는 최상단 root 바로 아래의 라우터 덩어리들도 reflow, repaint되는 걸 확인할 수 있었다. useEffect단에서 뭔가 처리하기란 여러울 듯 하다.
(혹시 좋은 꿀팁이 있다면 알려주면 너무 감사할 것 같습니다🙌)
아니면 Context API로 React.StrictMode 밖에 Provider로 렌더링 횟수를 넣어놓고 useEffect안에서 쓴다던가..
아무튼 개인 플젝에선 "가가미" strictmode를 빼는 걸로!
'React > 고민거리들' 카테고리의 다른 글
드롭다운 구현으로 알아보는 Generic을 사용하는 React props (0) | 2023.01.19 |
---|---|
[TIL] static assets을 한 방에 불러와보자! (0) | 2022.11.14 |
[React] github page 그리고 react-router-dom (1) | 2022.10.03 |
[React] 리빙포인트: 주석 간지나게 달기😎 (0) | 2022.09.28 |
[React] 리빙 포인트: Css in JS로는 font-face를 유니코드 별로 다르게 넣을 수 없다. (0) | 2022.09.06 |