CRA ( create-react-app) ๋ฅผ ์ฌ์ฉํ๊ณ ์์ง ์๋ค๋ฉด ์ด ๋ธ๋ก๊ทธ ํฌ์คํ ์ด ๋์์ด ๋ ๊ฒ์ด๋ค.
1. React 17 ์ด์
function Hello() {
return <h1>Hello, world!</h1>;
}
์ ์ฝ๋๋ jsx ๋ฌธ๋ฒ์ ์ด์ฉํ๊ณ ์์ผ๋ฉฐ ์ด๋ babel์ ํตํด js๋ก ๋ณํ๋๋ค.
function Hello() {
return React.createElement('h1', null, 'Hello, world!');
}
์์๊ฐ์ด ๋ณํ์ด ๋๋๋ฐ import React from 'react' ๋ฅผ ์๋ตํ๋ค๋ฉด React๋ฅผ ์ฝ์ ์ ์๋ค๋ ์๋ฌ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ชจ๋ jsํ์ผ์ react๋ฅผ import ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
1. React 17 ์ดํ
๋ฆฌ์กํธ๋ 17๋ฒ์ ์ดํ๋ถํฐ ์๋์ ๊ฐ์ด jsx๋ฅผ ๋ณํํ๋ค.
import {jsx as _jsx} from 'react/jsx-runtime';
function Greet() {
return _jsx('h1', { children: 'Hello, world!' });
}
๋ฐ๋ผ์ ๋งค๋ฒ react๋ฅผ import ํด์ฃผ์ง ์์๋ ๋๋ค.
cra๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด ๋ถ๋ถ์ด ์๋์ ์ผ๋ก ํด๊ฒฐ์ด๋๋ค. ํ์ง๋ง ์์ ๋ง์ boilerplate๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์๋์ ๊ฐ์ด ์ถ๊ฐํ ์์๊ฐ ์๋ค.
babel.lrc ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์
preset-react์๋ ์์๊ฐ์ jsx trsform์ด ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋์ด ์๋ค.
์ ๋ ์ค ์์ ์ด ์ฌ์ฉํ๋ ๊ฒ์ "runtime": "automatic"์ ์ถ๊ฐํ๋ค