티스토리 뷰
[React] DarkMode 새로고침시 화면 깜빡임문제 해결 - useLayoutEffect
안녕하세요. 이번 포스팅 에서는 useLayoutEffect Hook에 대해 간단히 소개하고,
UseLayoutEffect Hook을 이용해, DarkMode에서 새로고침시 화면이 깜빡이는 문제를 해결하는 방법에 대해 알아보겠습니다.
useLayoutEffect & useEffect
- useLayoutEffect는 기본적으로 useEffect와 형태가 동일합니다.
useLayoutEffect(() => { effect(); return () => { cleanup(); }; }, [input])
useEffect와 useLayoutEffect의 차이점
- useEffect는 DOM이 화면에 그려진 이후에 호출됩니다.
그렇기 때문에 useEffect를 이용해서 Layout을 변경할 경우, 새로고침시 화면이 깜빡이는 문제가 발생할 수 있 습니다. 이전 상태가 그려진 이후에, Layout이 바뀌기 때문이죠. - useLayoutEffect는 이러한 문제를 해결하기 위해 등장했습니다.
useLayoutEffect는 DOM이 화면에 그려지기 전에 호출됩니다. 따라서, useLayoutEffect를 이용해 Layout을 변경할 경우, Layout이 변경된 이후에 DOM이 그려지기 때문에 새로고침시 깜빡임이 발생하지 않습니다.
Dark모드에서의 useEffect와, useLayoutEffect 차이
useEffect - 화면깜빡임 발생
useEffect(() => {
localStorage.getItem('data-theme') === 'dark'
? setIsDark(true)
: setIsDark(false);
}, []);
useLayoutEffect - 화면깜빡임 발생 X
useLayoutEffect(() => {
localStorage.getItem('data-theme') === 'dark'
? setIsDark(true)
: setIsDark(false);
}, []);
'개발일기 > REACT' 카테고리의 다른 글
[Nextjs] nextjs middleware활용해서 redirect구현하기 (0) | 2022.09.08 |
---|---|
[Nextjs] userAgent 에서, 브라우저 환경 구분하는 방법 (0) | 2022.09.02 |
[React] Next.js build 할 때, dynamic route 404 error 해결하는 방법 (0) | 2022.03.20 |
[React] fakerjs, shortid를 이용해서 그럴싸한 DummyData 만들기. (0) | 2022.03.11 |
[React] shortid를 사용해 랜덤한 key값 만들기 (0) | 2022.03.08 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 전자기학
- shortid
- 전기기사실기CBT
- nextjs
- React
- 전기기사
- fakerjs
- 산안기 합격률
- 산업안전기사 실기
- KEC반영
- 개더타운
- 전기기기
- JavaScript
- 게더타운맵
- 모두CBT
- TypeScript
- zep
- 실기CBT
- 전기기사실기단답
- cbt
- dummydata
- 게더타운
- 전기산업기사
- 전기공사기사
- 전기기사필기
- 산업안전기사
- 전력공학
- 전기기사 필기
- gathertown
- TS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함