๐ React Compiler: React 18 ์๋น์ค ๋์ ํ ์คํธ ํ๊ธฐ
React 19์ ํจ๊ป ๋จ๊ฑฐ์ด ๊ด์ฌ์ ๋ฐ๊ณ ์๋ React Compiler๋ฅผ ํ์ฌ ์ด์ ์ค์ธ React 18 ๊ธฐ๋ฐ์ Coinness ์๋น์ค์ ์ง์ ์ ์ฉ ํ
์คํธ๋ฅผ ํด๋ณด์๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, ์ ์ฉํ๊ธฐ์๋ ์ฅ์ ๋ณด๋ค ๋จ์ ์ด ๋ ๋ง๋ค. ํนํ ๊ท๋ชจ๊ฐ ํฐ ์ฝ๋๋ฒ ์ด์ค๋ผ๋ฉด ์ผ๊ด ์ ์ฉ๋ณด๋ค๋ ์ ์ง์ ์ธ ๋์
์ด ํ์์ ์ด๋ค. ์ ์ด๋ฐ ๊ฒฐ๋ก ์ ๋ด๋ ธ๋์ง ์์ธํ ํ๊ธฐ๋ฅผ ์ ๋ฆฌํด ๋ณธ๋ค.
โ ๏ธ React 18 ํ๊ฒฝ์์ ๋ฐ๊ฒฌ๋ ์ฃผ์ ๋จ์
๋ง๋ฒ์ฒ๋ผ ๋ชจ๋ ๊ฒ์ ์ต์ ํํด ์ค ๊ฒ ๊ฐ์์ง๋ง, React 18์ด๋ผ๋ ๊ธฐ์กด ํ๊ฒฝ์ ์ ์ฉํ์ ๋ ๋ฌด์ํ๊ธฐ ํ๋ ๋จ์ ๋ค์ด ๋ฐ๊ฒฌ๋์๋คโฆ
์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น์ ๋ฐํ์ ํฌํผ์ ๊ฐ์
- React Compiler๋ ๋ฉ๋ชจ์ด์ ์ด์
์ ์ํด ๋ด๋ถ์ ์ผ๋ก
useMemoCache๋ผ๋ ํ ์ ์ฃผ์ ํ๋ค. 19 ๋ฒ์ ์๋ ์ด๋ฏธ ๋ด์ฅ๋์ด ์์ง๋ง, 18 ๋ฒ์ ์์๋ ์ด๋ฅผ ํ๋ด ๋ด๊ธฐ ์ํ ๋ณ๋์ ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(react-compiler-runtime)์babel-plugin-react-compiler์ค์น๊ฐ ํ์์ ์ด๋ค.
- ๊ฒฐ๊ตญ ์๋ก์ด ์์กด์ฑ์ด ์ถ๊ฐ๋ ๋ฟ๋ง ์๋๋ผ, ๊ฑฐ์ ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ต์ ํ ๋ก์ง๊ณผ ํฌํผ ํจ์๊ฐ ๋ค์ด๊ฐ๋ฉด์ ์ ์ฒด์ ์ธ ์ฝ๋๋์ด ๋์ด๋๋ ๊ฒ์ ํผํ๊ธฐ ์ด๋ ต๋ค.
๋ฒ๋ค ์ฌ์ด์ฆ์ ์ฆ๊ฐ
- ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ต์ ํ ์ฝ๋๊ฐ ์ฝ์ ๋๋ค ๋ณด๋ ์ ์ฒด ์ฝ๋๋์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋์ด๋๋ค. ์๋น์ค ๊ท๋ชจ๊ฐ ํด์๋ก ์ด ์ฐจ์ด๋ ๋ ๋๋ ทํ๊ฒ ๋ํ๋๋ค.
๋น๋ ์๋ ์ ํ
- ์ปดํ์ผ๋ฌ๊ฐ ์ ์ ๋ถ์์ ์ํํ๋ ๋จ๊ณ๊ฐ ์ถ๊ฐ๋๋ฉด์ ์ ์ฒด์ ์ธ ๋น๋ ์๊ฐ์ด ๋์ด๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ๊ฐ๋ฐ ์์ฐ์ฑ์ ์ํฅ์ ์ค ์ ์๋ ์์ค์ด๋ค.
annotation ๋ชจ๋๋ก ์ ์ง์ ๋์
ํ๊ธฐ
๋ชจ๋ ์ฝ๋๋ฅผ ์ปดํ์ผ๋ฌ์ ๋งก๊ธฐ๋
all ๋ชจ๋๋ณด๋ค ๊ฐ๋ฐ์๊ฐ ์ง์ ํต์ ํ๋ compilationMode: 'annotation' ์ค์ ์ด ํจ์ฌ ํฉ๋ฆฌ์ ์ด๋ผ๋ ๊ฒฐ๋ก ์ ์ป์๋ค.์ 'Annotation' ๋ชจ๋์ธ๊ฐ?
- ์์ธก ๊ฐ๋ฅ์ฑ: ์ปดํ์ผ๋ฌ๊ฐ "๋ง๋ฒ"์ฒ๋ผ ๋ชจ๋ ๊ฒ์ ๋ฐ๊พธ๊ฒ ๋์ง ์๊ณ , ๊ฐ๋ฐ์๊ฐ ์ต์ ํ ๋์์ ์ง์ ํต์ ํ ์ ์๋ค. ์ด๋ ๋๋ฒ๊น ์ ๋ฒ์๋ฅผ ์ขํ๋ ๋ฐ ๊ฒฐ์ ์ ์ธ ์ญํ ์ ํ๋ค.
- ์ ์ง์ ๋์ : ์ ์ฒด๋ฅผ ํ๊บผ๋ฒ์ ๋ฐ๊พธ๋ ๋ฆฌ์คํฌ ์์ด, ์ฑ๋ฅ ๋ณ๋ชฉ์ด ๋ฐ์ํ๋ ๋ณต์กํ ๊ณ์ฐ ๋ก์ง์ด๋ ๋ฌด๊ฑฐ์ด ์ปดํฌ๋ํธ๋ถํฐ ํ๋์ฉ ์ ์ฉํด ๋๊ฐ ์ ์๋ค.
- ๋ถ์์ฉ ์ต์ํ: ๋ถํ์ํ ๊ณณ์ ๋ฐํ์ ํฌํผ๊ฐ ์ฃผ์ ๋๋ ๊ฒ์ ๋ง์ ๋ฒ๋ค ์ฌ์ด์ฆ ์ฆ๊ฐ ํญ์ ํจ๊ณผ์ ์ผ๋ก ์ต์ ํ ์ ์๋ค.
๐ ๏ธ ์ค์ ์ ์ฉ ๋ฐ ์ค์ ์์
React Compiler๋ ๋ถ๋ช
๋งค๋ ฅ์ ์ธ ๋๊ตฌ์ด์ง๋ง, React 19 ๋ฏธ๋ง ํ๊ฒฝ์ ํ๋ก์ ํธ์์๋ 'ํต์ ๊ฐ๋ฅํ ์ต์ ํ'๊ฐ ๋ ์ค์ํ๋ค. ๋ฌด์์ ๋์
ํ๊ธฐ๋ณด๋ค๋
annotation ๋ชจ๋๋ฅผ ํ์ฉํด ๋ฆฌ์คํฌ๋ฅผ ์ค์ด๋ฉด์ ์ ์ง์ ์ผ๋ก ์ฑ๋ฅ์ ๊ฐ์ ํด ๋๊ฐ๋ ๋ฐฉํฅ์ ์ถ์ฒํ๋ค.ย