๐จ ๊ธ์ ๋ค์ด๊ฐ๊ธฐ ์์ ๋ธ๋ผ์ฐ์ ๋ ํ๋ฉด์ ๊ทธ๋ฆด ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์คํ
- DOM ๋ณ๊ฒฝ ๊ฐ์ง
- ์คํ์ผ ๊ณ์ฐ
- Layout (Reflow) – ์์์ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐ
- Paint – ๊ณ์ฐ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํฝ์ ์ ๊ทธ๋ฆฌ๊ธฐ
- Composite – ๋ ์ด์ด๋ฅผ ์กฐํฉํด ์ต์ข ์ ์ผ๋ก ํ๋ฉด์ ์ถ๋ ฅ
์ ์ฌ์ดํด์ ๋ณดํต 1์ด์ 60๋ฒ, ์ฝ 16.6ms๋ง๋ค ๋ฐ๋ณต๋๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ ์ด ์ฃผ๊ธฐ์ ๋ง์ถฐ ์ต๋ํ ๋ถ๋๋ฝ๊ฒ ํ๋ฉด์ ๋ ๋๋ง์ ํ๋๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์ DOM์ ์กฐ์ํ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ์ ์ฒ๋ฆฌํ ๋ ์ด ํ์ด๋ฐ์ ๊ณ ๋ คํ์ง ์์ผ๋ฉด, ํ๋ ์ ๋๋กญ, ๋๊น, ๋๋ ค์ง ์ธํฐ๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์ฝ๊ฒ ๋ฐ์ํ๋ค๊ณ ํ๋ค.
โจ requestAnimationFrame ์ด๋?
window.requestAnimationFrame() ๋ฉ์๋๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ํํ๊ธฐ๋ฅผ ์ํ๋ ์ ๋๋ฉ์ด์ ์ ์๋ฆฌ๊ณ ๋ค์ ๋ฆฌํ์ธํธ ๋ฐ๋ก ์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋๋ฉ์ด์ ์ ์ ๋ฐ์ดํธํ ์ง์ ๋ ํจ์๋ฅผ ํธ์ถํ๋๋ก ์์ฒญํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๋ฆฌํ์ธํธ ์ด์ ์ ํธ์ถํ ์ธ์๋ก ์ฝ๋ฐฑ์ ๋ฐ์ต๋๋ค.
requestAnimationFrame() ์ ์์์ ๋งํ ๊ทธ ํ์ด๋ฐ์ ๊ณ ๋ คํ๋ ๋ฉ์๋๋ค.
๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์ฃผ๊ธฐ ์์์ ๊ฐ์ฅ ์ ์ ํ ํ์ด๋ฐ์ ์ฝ๋ฐฑ์ ์คํํด ์ฃผ๋ฉฐ, DOM ๋ณ๊ฒฝ์ด๋ ์คํ์ผ ์
๋ฐ์ดํธ ๊ฐ์ ์์
์ ์ด ์์ ์ ๋ง์ถฐ ์คํํ๋ฉด ๋ถํ์ํ Reflow๋ Paint๋ฅผ ์ค์ผ ์ ์๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ํผํฌ๋จผ์ค๊ฐ ํฅ์๋๋ค๊ณ ํ๋ค.
๋์ ๊ฒฝ์ฐ, ์ ์ ๊ฐ๋ฐํ๋ ์ํฝ์์ ๋ง์ฐ์ค๋ก ๋น ๋ฅด๊ฒ ๋๋๊ทธํ ๋ ๋ฌํ๊ฒ ํํ ๋๊ธฐ๋ ๋๋์ด ๋ค์ด์ ํด๋น ๋ฉ์๋์ ๋ํด ์ฐพ์๋ณด๊ฒ ๋์๋ค. requestAnimationFrame์ ์ ์ฉํ๊ณ ๋์ ํด๋น ํ์์ด ์ฌ๋ผ์ก๊ณ , ์ฒด๊ฐ์์ผ๋ก๋ ํจ์ฌ ๋ถ๋๋ฝ๊ฒ ์๋ํ๋ค. ๋ค๋ง ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํ ๋, ์ ์ฉ ์ ํ๊ฐ ์์์ผ๋ก๋ ์ฐจ์ด๊ฐ ์ ๋๋ฌ๋์ง ์์ ์ด๋ป๊ฒ ๋น๊ตํด ๋ณผ์ง ๊ณ ๋ฏผ์ด ๋ง์๋๋ฐ, ๐ค ์ ์ถ์ฒ์ Performance ํญ์ ์ข ๋ ๊น๊ฒ ๋ค์ฌ๋ค๋ณด๊ฒ ๋์๋ค.
๐ ์ฑ๋ฅ ๋น๊ต
์ผ์ชฝ์ด requestAnimationFrame ์ ์ฉ ์ ์ํ, ์ค๋ฅธ์ชฝ์ด ์ ์ฉ ํ ์ํ์ด๋ค. ๋ ๊ฐ ๋ค ์ค์ ์ธํฐ๋์
์ด ์ผ์ด๋๋ ๊ตฌ๊ฐ์ ํ๋ํด ๋ณด์๋ค.
์ ์ฉ ์ ํ์๋ผ์ธ์ ๋ณด๋ฉด ํ๋ ์ ๋๋์ด ์ฌ๋ฌ ๋ฒ ๋ฐ์ํ๊ณ ์๊ณ , ๋ ์ด์์ ๋ณ๊ฒฝ๋ ๋ถ๊ท์นํ๊ฒ ์ผ์ด๋๋ฉฐ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋ง ํ์ด๋ฐ์ ์ ๋๋ก ๋ง์ถ์ง ๋ชปํ๊ณ ์๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค. ๋ฐ๋ฉด ์ ์ฉ ํ ์ํ๋ ํ๋ ์์ด ์ผ์ ํ๊ฒ ์ ์ง๋๊ณ ์์ผ๋ฉฐ, ํ๋ ์ ๋๋กญ๋ ๋ฐ์ํ์ง ์์๋ค.
๋ ์ด์์ ๋ณ๊ฒฝ์ ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณต๋๊ณ ์์ด, DOM ๋ณ๊ฒฝ์ด ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์ฃผ๊ธฐ ์์์ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ณ ์์์ ๋ณด์ฌ์ค๋ค.
๋ ์ด์์ ๋ณ๊ฒฝ์ด ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณต๋๋ ์ด์ ๋ ์์์ ์ธ๊ธ๋ ํ์ด๋ฐ ๋๋ฌธ์ด๋ค.
requestAnimationFrame์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ ํ๋ ์์ ๊ทธ๋ฆฌ๊ธฐ ์ง์ , ์ฆ ๋ ๋๋ง ์ฌ์ดํด์ ๊ฐ์ฅ ์ ์ ํ ์๊ฐ์ ์ฝ๋ฐฑ์ ์คํํด ์ค๋ค. ์ด๋ DOM ๋ณ๊ฒฝ์ด๋ ์คํ์ผ ์์ ์ด ์ผ์ด๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๊ทธ ๋ณ๊ฒฝ์ฌํญ์ ๊ณง๋ฐ๋ก ์ด์ด์ง Layout ๋ฐ Paint ๊ณผ์ ์ ๋ฐ์ํ ์ ์๊ณ , ๋ถํ์ํ ์ฐ์ฐ ์์ด ํ ํ๋ ์ ์์์ ๋ชจ๋ ๋ ๋๋ง ์์
์ด ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๋๋ง ์ฃผ๊ธฐ์ ์ ํํ ๋ง๋ฌผ๋ ค ์์
์ด ์งํ๋๊ธฐ ๋๋ฌธ์, ๋ ์ด์์ ๋ณ๊ฒฝ๋ ๋งค ํ๋ ์๋ง๋ค ์ผ์ ํ๊ฒ ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๐ค ๋๋์
์ ๋งคํ๊ฒ ๋๊ปด์ง๋ ์์ ๋๊น์ ํด๊ฒฐํ๊ธฐ ์ํด ์์ํ๋ ๋ฌธ์ ์์ง๋ง, ๊ธ์ ์ ๋ค ๋ณด๋ ๊ฒฐ๊ตญ "์ธ์ ์คํ๋๋๊ฐ"๊ฐ ์ฑ๋ฅ์์ ์ผ๋ง๋ ์ค์ํ์ง๋ฅผ ์ฒด๊ฐํ๊ฒ ๋์๋ค. requestAnimationFrame์ ๋จ์ํ ์ ๋๋ฉ์ด์ ์ ๋ถ๋๋ฝ๊ฒ ํด์ฃผ๋ ์ ํธ์ฑ API๊ฐ ์๋๋ผ, ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ํ์ด๋ฐ๊ณผ ๋ด ์ฝ๋์ ์คํ ์์ ์ ๋ง์ถฐ์ฃผ๋ ์ต์ ํ ๋๊ตฌ๋ค. ๋ง์ฝ ์ ๋๋ฉ์ด์ ๋์ค ๋๊น์ด๋ ๋ฒ๋ฒ ๊ฑฐ๋ฆผ์ด ๋๊ปด์ง๋ค๋ฉด, ๊ฐ์ฅ ๋จผ์ , ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ๊ฒ ์๋ํด ๋ณผ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋๊น ์ถ๋ค.
'๐ WIL > ๐ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
cloneElement๋ฅผ ์ฐ์ง ๋ชปํ ์ด์ (0) | 2025.05.04 |
---|---|
๐ ๋ฆฌ๋ ๋๋ง ์ด์ ํด๊ฒฐํ๊ธฐ (0) | 2025.03.23 |
๋์ผํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๋ฉด์ ๋ ๋ฆฝ์ ์ธ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ (1) | 2024.11.17 |
๐จ React Dev Tools ์ ๋ํด ์์๋ณด์ (0) | 2024.10.27 |
useTransition & useDeferredValue (0) | 2024.10.13 |