๐ useLayoutEffect, useEffect์ ์ฐจ์ด์ ์์๋ณด๊ธฐ
react
๋ฅผ ์ฌ์ฉํ ๋ paint screen
๋จ๊ณ ์ดํ ์ฆ, ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ ๋๋ง ๋ ์ดํ ์ฌ์ด๋ ์ดํํธ(side Effect)
(์ฌ๊ธฐ์ ๋งํ๋ ์ฌ์ด๋ ์ดํํธ๋ ์ปดํฌ๋ํธ ๋ด์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, ๊ตฌ๋
์ค์ ํ๊ธฐ, ์๋์ผ๋ก ์ปดํฌ๋ํธ์ DOM์ ์กฐ์ํ๋ ์์
๋ฑ์ ๋งํ๋ค.)๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ํธ์ถํ ๋ ์ฃผ๋ก useEffect
๋ฅผ ์ฌ์ฉํ๋ค.
(์๋ ์ฌ์ง์ github์์ ๊ฐ์ ธ์จ hook-flow
์ฌ์ง์ธ๋ฐ, `flow`๋ฅผ ํ๋์ ์ ์ ์์ด์ ๊ฐ์ ธ์๋ดค๋ค.)
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์๊ฐ์ ํ๋ฉด์ state
์ ๊ฐ์ด ๋ฐ๋์ด์ ํ๋ฉด์ด ๊น๋นก์ด๊ฑฐ๋ DOM
์ ํธ์ถํ๊ธฐ ์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น? paint screen
๋จ๊ณ ์ด์ ์ฆ, ํ๋ฉด์ด ๊ทธ๋ ค์ง๊ธฐ ๋ฐ๋ก ์ ์ ๊ฐ์ ๋๊ธฐ์ ์ผ๋ก ํธ์ถํ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค๋ฉด useLayoutEffect
hook์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ ๋ง๋ก useLayoutEffect
๋ ํ๋ฉด์ ๊ทธ๋ ค์ง๊ธฐ ์ ์ ์คํ๋๋์ง ๊ถ๊ธํ์ฌ ๊ฐ๋จํ ์คํ์ ์งํํ๋ค. ๋ง์ฝ, localStorage
์ ์ ์ฅ๋ ๊ฐ์ ๋ถ๋ฌ์ค๋ ์์
์ ์ฌ์ด๋์ดํํธ๋ก ๊ด๋ฆฌํ๋ค๊ณ ํ์ ๋, useEffect
, useLayoutEffect
์ค ์ด๋ค ์ฝ๋๋ก ์์ฑํด์ผ ์ ํฉํ ๊น? ์๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ํ๋จ์ gif
๋ฅผ ๋ณด๊ณ ์ด๋ค gif
๊ฐ useEffect
ํน์ useLayoutEffect
๋ฅผ ์ฌ์ฉํ์์ง ํ๋ฒ ๊ณ ๋ฏผํด๋ณด์.
๋๋ฌด ์ฌ์ ๋๊ฐ? ์ ๋ต์ ์ฒซ๋ฒ์งธ gif
๊ฐ ๋ฐ๋ก useLayoutEffect
๋ฅผ ์ฌ์ฉํ ์ฝ๋์ด๊ณ ๋ ๋ฒ์งธ gif
๋ useEffect
๋ฅผ ์ฌ์ฉํ ์ฝ๋์ด๋ค. ์ด๋ค ์ฐจ์ด์ ์ด ์๋์ง ๋์ ํฌ๊ฒ ๋จ๊ณ ๋ณด๋ฉด ๋ณด์ผ ํ
๋ฐ, ๋ ๋ฒ์งธ gif
๋ ํ๋ฉด์ ๋ ๋๋ง ๋ ์ดํ์ localStorage
๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ์ฒ์์๋ ๋น ๊ณต๊ฐ์ด์๋ค๊ฐ ๋ ๋๋ง์ด ๋๋๋ฉด ํ๋ฉด์ด ์์ง์ด๋ฉด์ ๊ฐ์ด ์ฑ์์ง๋ ๊ฒ์ ์ ์ ์๊ณ ๋ฐ๋ฉด์, ์ฒซ๋ฒ์งธ gif
๋ ๋ธ๋ผ์ฐ์ ์ ๊ทธ๋ ค์ง๊ธฐ ์ ์ ๋ก์ง์ ์คํํ๋ฏ๋ก ๋ง๋ํ๊ฒ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ ์ ์๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๋ ๋๋ง ์ด์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด useLayoutEffect๋ฅผ ์ฌ์ฉํ๊ณ , ๋ ๋๋ง ์ดํ์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด useEffect๋ฅผ ์ฌ์ฉํ๋ ํธ์ด ์ ํฉํ๋ค. ํ์ง๋ง ์ธ์ ๋ ๊ทธ๋ ๋ฏ ๋ฐ๋ก๋ ์ถฉ๋ถํ ์กด์ฌํ๋ฏ๋ก, ๋ฌด์์ ๋ฐ๋ผ ์ฐ๋ ๊ฒ๋ณด๋ค ์ ์ด๊ฒ์ ์จ์ผ ํ๋์ง, ํ์ฌ ๋์ ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
๊ธ์ ๋ง์น๋ฉด์ ์ด๋ฐ ์ธ์ธํ ๋ถ๋ถ๊น์ง ์ ๊ฒฝ ์จ์ผ ํด..?๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์๋ค. ๊ทธ๋ฌ๋ ์์ ์คํ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ ๊ฐ์ด ์์ ๊ฒฝ์ฐ์๋ ๋ฏธ๋ฏธํ ์ ์์ง๋ง ์ค์ ๋ฐฐํฌ ์ดํ ๊ฐ์ด ์ปค์ ธ ๋ธ๋ผ์ฐ์ ๊ฐ ์กฐ๊ธ์ด๋ผ๋ ๋๋ ค์ง๊ฒ ๋๋ค๋ฉด ์ง๊ธ๊ณผ ๊ฐ์ ๋ชจ์ต์ด ํ์ฐํ๊ฒ ๋ณด์ผ ๊ฒ์ด๊ณ ์ด๋ ๊ณง ๊ณ ๊ฐ์ ๊ฒฝํ์ฑ์ผ๋ก ์ด์ด์ง ์ ์๋ค. ๋จ๋ค๋ณด๋ค ๊ฒฝ์๋ ฅ ์๋ front-end
๊ฐ ๋๋ ค๋ฉด ์ด๋ฐ ๋ํ
์ผํ ๋ถ๋ถ๊น์ง ์บ์นํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
reference
๋๊ธ