JSX: Javascript XML
1) Javascript์์ HTML์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๋ฆฌ์กํธ๋ง์ ๋ฌธ๋ฒ(syntax)์ ๋งํ๋ค.
2) html์์ ๋ณ์๋ฅผ ๋ฃ์ผ๋ ค๋ฉด { }๋ก ๊ฐ์ผ๋ค.
3) html์ attribute๋ฅผ ๋ค๋ฅด๊ฒ ์ด๋ค. class๋์ className, onclick๋์ onClick ๋ฑ
JSX๋ react ํ์ผ์ ํ์ฅ์๋ก์จ์ ์์ง์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
ECMAScript๊ฐ Javascript์ ํ์ค๊ณผ ๊ท๊ฒฉ๋ฑ ๋ฌธ๋ฒ์ ๊ดํด ์ฌ์ฉํ ๋ ์ฐ๋ ๊ฒ์ฒ๋ผ, JSX๋ JS์ ํ์ผ์ React ๋ผ์ด๋ธ๋ฌ์ ํ์ค์ ๋ฐ๋ฅธ๋ค๋ ์๋ฏธ๋ก์จ ์ฌ์ฉ๋๋ ํ์ฅ์๋ค. ๋ค๋ง, ๋์ ๊ตฌ๋ถ์ง์ผ๋ฉด์ ์ป๋ ์ด์ต์ด ๋ฑํ ์๊ณ , JSํ์ผ์ JSX๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, CRA์ ๊ฐ์ ํด์ฒด์ธ์ ์ํด JS ์ฝ๋๋ก ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๊ตฌ๋ถํด์ ์ฌ์ฉํ์ง ์๋๋ค.
React 17๋ฒ์ ๋ถํฐ๋ import React from "react"๋ฅผ ์๋ตํ๋ค.
์์ ์ฝ๋
import React from 'react';
function App() {
return <h1>Hello World</h1>;
}
Under the hood, the old JSX transform turns it into regular JavaScript:
import React from 'react';
function App() {
return React.createElement('h1', null, 'Hello world');
}
๋ฐ๋ ์ฝ๋
function App() {
return <h1>Hello World</h1>;
}
// Inserted by a compiler (don't import it yourself!)
import {jsx as _jsx} from 'react/jsx-runtime';
function App() {
return _jsx('h1', { children: 'Hello world' });
import React from "react" ๋ฅผ ์ฐ์ง ์์๋ ์ด์ , ์ปดํ์ผ๋ฌ๊ฐ ์์์ jsx์ฝ๋๋ฅผ js๋ก ๋ฐ๊ฟ์ค๋ค.
์ด์ JSX์ฝ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด react๋ฅผ importํ์ง ์์๋ ๋๋ค. ํ์ง๋ง hooks์ด๋, Componet๋ฑ react๊ฐ ์ ๊ณตํ๋ exports๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ํ์ํ๋ค.
JSX ๋ฌธ๋ฒ ์ดํด๋ณด๊ธฐ
https://ko.reactjs.org/docs/jsx-in-depth.html
JSX ์ดํดํ๊ธฐ – React
A JavaScript library for building user interfaces
ko.reactjs.org
'๐ Front > โ๏ธ React JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
virtual DOM ํํค์น๊ธฐ (0) | 2021.12.09 |
---|---|
React [๋ฆฌ๋ ๋๋ง ๊ณผ์ ] (0) | 2021.09.08 |
[styled-components] ํ์ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๊ธฐ (0) | 2021.09.02 |
[React Hook ์๋ฆฌ์ฆ 3]: 10๊ฐ์ง Hook๋ค (useMemo, useRef ๋ฑ) (0) | 2021.08.03 |
[React Hook ์๋ฆฌ์ฆ 2]: useEffect() (0) | 2021.07.22 |