728x90
๋ฐ์ํ
useEffect
render
- ๋ ๋(render)๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ง๋(paint) ํ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ
- paint ๋ ํ์ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ด๋ถ์ DOM์ ์ํฅ์ ์ฃผ๋ ์ฝ๋๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ฅ์์๋ ํ๋ฉด์ ๊น๋นก์์ ๋ณด๊ฒ ๋๋ค
์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ์ผ๋ถ ์ํ๋ฅผ ์ฆ์ ๋ฐ์ํ ํ์๊ฐ ์์ ๊ฒฝ์ฐ
- ํ์ด์ง์ ์๊ฐ์ ์ผ๋ก ์ํฅ์ ์ฃผ์ง ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋๊ธฐํ ํ ๊ฒฝ์ฐ
- ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ค์ ํ๋ ๊ฒฝ์ฐ
- ๋ชจ๋ฌ์์๊ฐ ๋ํ๋๊ฑฐ๋ ์ฌ๋ผ์ง ๋ ์ผ๋ถ ์ํ๋ฅผ ์ฌ์ค์ ํ๋ ๊ฒฝ์ฐ
useLayoutEffect
render
- ๋ ๋๋ง ํ ํ๋ฉด์ด ์ ๋ฐ์ดํธ ๋๊ธฐ ์ ์ ๋๊ธฐ์ ์ผ๋ก ์คํ
- paint๊ฐ ๋๊ธฐ ์ ์ ์คํ๋๊ธฐ ๋๋ฌธ์ DOM์ ์กฐ์ํ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋๋ผ๋ ์ฌ์ฉ์๋ ๊น๋นก์์ ๊ฒฝํํ์ง ์๋๋ค
์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ์ํ๊ฐ ์ ๋ฐ์ดํธ ๋ ๋ ์์๊ฐ ๊น๋ฐ์ด๋ ๊ฒฝ์ฐ
- DOM์ ๋ณ๊ฒฝํ๋ ค๋ ๊ฒฝ์ฐ
useLayoutEffect์ ๋ํด์ ์ง์ง ์ฒ์๋ค์ด๋ด์ ๋๋ฌด ๋นํน์ค๋ฌ์ ๋ค. useEffect๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์ดํดํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋ก์ง์ด ๋ณต์กํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋ ์ด์์์ ๋ณด๊ธฐ๊น์ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์์ด์ useEffect๋ง์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ค.
๋ฐ์ดํฐ๋ฅผ fetchํ๊ฑฐ๋ event handler, state reset์ ์์ ์ useEffect๋ฅผ ์ฌ์ฉํ๋, ํ๋ฉด์ด ๊น๋นก๊ฑฐ๋ฆฌ๋ ์ํฉ์ผ ๋๋ useLayoutEffect๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
์ฐธ์กฐ ํ์ต์๋ฃ
โพ https://hyojin96.tistory.com/entry/%F0%9F%8D%80-useEffect-VS-useLayoutEffect-%F0%9F%8D%80
728x90
'๊ฐ๋ฐ > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React-Query ๋? (0) | 2022.03.28 |
---|---|
[React] React Custom Hooks (0) | 2022.03.23 |
React vs Vue.js ์ฐจ์ด์ (0) | 2022.03.02 |
[React] ๋ฆฌ์กํธ ํ๋ก์ ํธ Netlify๋ก ๋ฐฐํฌํ๊ธฐ (0) | 2022.02.21 |
[React.Js] UseState ์ฌ์ฉ / ๊ฐ๋จํ ๋ฆฌ์คํธ ๋ง๋ค๊ณ ์ง์ฐ๊ธฐ (0) | 2022.02.18 |