JavaScript Syntax Extension : ๋งํฌ์ ์ ํธ๋ฆฌํ๊ฒ ์์ฑํ๊ธฐ ์ํ js ํ์ฅ ๋ฌธ๋ฒ (๋งํฌ์ ๊ณผ js ๋์์ ์ธ ์ ์๋ค)
๊ธฐ๋ณธ์ ์ผ๋ก React ์์๋ฅผ ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋๋ฐ ์ฐ๋ฆฌ๊ฐ HTML์์ ์ฌ์ฉํ ๋ฌธ๋ฒ๊ณผ ํก์ฌํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค.
JSX๋ก ์์ฑํ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๊ณผ์ ์์ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค.
์์)
const Title = () => (
<h3 id="title" onClick={() => console.log("I'm clicked")}>
Hello I'm a Title
</h3>
);
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด JSX๋ HTML ํ๊ทธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ณด๊ธฐ ์ฝ๊ณ ์ต์ํ๋ค.
๋ํ HTML ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๋์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ JSX ์์์ ๋์ํ๊ฒ ํ ์ ์๋ค.
onClick = {() => console.log("hi")}
<div className ='title'></div>
<div style={{color : "red"}}>Hello React</div>
<br />
๊ณผ ๊ฐ์ ํ๊ทธ๋ฅผ self closing tag๋ผ๊ณ ํ๋ค. JSX์์๋ ๋ฐ๋์ ํ๊ทธ๋ฅผ ๋ซ์์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐํธํ๊ฒ self closing tag๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค!
JSX์ ํฐ ํน์ง ์ค ํ๋๋ ๋ด๋ถ ์์๋ค์ ๊ฐ์ธ๋ ์ต์์ ์์๊ฐ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๐ <>...</>
React Fragment
Fragments๋ DOM์ ๋ณ๋์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ํ๋์ ์ปดํฌ๋ํธ ์์ ์ฌ๋ฌ ์์(์์)๋ค์ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฃนํ ํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ์์๋ค์ ๊ฐ์ธ๋ div ํ๊ทธ์ ๋ถํ์ํ ์์ฑ์ ๋ง์ ์ ์์ด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋!.
<>
<div className="loginBtn" onClick={() => console.log("click")}>Login</div>
<br />
<div style={{backgroundColor: "grey", height: "10px"}} />
</>
JSX ๋ด์์ ์๋ฌด๊ฒ๋ returnํด์ฃผ์ง ์๊ณ component๋ฅผ returnํด์ฃผ๋ฉด ์ค๋ฅ๊ฐ ๋๋ค๋ ์ ๊ธฐ์ตํ๊ธฐ!
JSX ๋ด์์ ์ค๊ดํธ ์์ ๋ค์ด๊ฐ ์ ์๋ ๊ฒ : string number, string๊ณผ number๋ฅผ returnํ๋ ํจ์ ๋ฑ. ์ฐ์ฐ์์ด๋ ์ผํญ์กฐ๊ฑด์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ค.
๐์ผํญ์กฐ๊ฑด ์ฐ์ฐ์ด render๋๋ ๊ฒ์ ์กฐ๊ฑด๋ถ rendering์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ex)
<div>{5 % 2 === 0? '์ง์' : 'ํ์'}</div>
let num = 0;
const inCreaseNum = () => num++
<div>{inCreaseNum}</div>
JSX ๋ฌธ๋ฒ ๋์์.. ์ ๋ง ๋คํ์ด๋ค,,,ใ .ใ !