JSX ?
JSX (JavaScript XML)์ JavaScript ์ธ์ด์ ํ์ฅ์ผ๋ก, ๊ฐ๋ฐ์๋ค์ด JavaScript ์ฝ๋ ๋ด์์ HTML๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ์ธ๊ธฐ์๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
JSX๋ฅผ ์ฌ์ฉํ๋ฉด HTML์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ JavaScript์ HTML์ ํผํฉ๋ฌผ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- JSX(JavaScript XML)๋ Javascript์ XML์ ์ถ๊ฐํ ํ์ฅํ ๋ฌธ๋ฒ์ด๋ค.
- JSX๋ ๋ฆฌ์กํธ๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ฏ๋ก ๊ณต์์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์๋๋ค.
- ๋ธ๋ผ์ฐ์ ์์ ์คํํ๊ธฐ ์ ์ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค.
- JSX๋ ํ๋์ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ HTML์ ๋์์ ์์ฑํ์ฌ ํธ๋ฆฌํ๋ค.
- JSX๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์ฌํ๋ฏ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์์ฝ์ด ์ฌ์ฉ์ ํผํด์ผ ํ๋ค.
โ ์ง๊ณ ๋์ด๊ฐ๊ธฐ
- ๊ฐ๋ ฅํ ๋ฌธ๋ฒ์ฒดํฌ
๐ HTML์ ํ๊ทธ๋ฅผ ์๋ซ์๋ ์ค๋ฅ๊ฐ ์๋์ง๋ง JSX์์๋ ํ์คํ ๋ซ์์ผ ํ๋ค. - ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ๋ฌธ๋ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ํฌ๋กฌ์ด ํด์์ ๋ชป ํจ.
๐ ๋ฐ๋ผ์, ๋ฐ๋ฒจ์ ์ด์ฉํ์ฌ ๋ณํ๊ณผ์ ์ด ํ์ํจ(JSX -> ES5) - import / export ๊ตฌ๋ฌธ์ Node.js์์ ์ง์ํ๋ ๊ธฐ๋ฅ
- ํ๊ทธ์ className๋ง ์
๐ ์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์ ์ผํ ๊ฐ์ด์ด์ผ ํ๋ id ์ ์
๐๐ id๋ฅผ ๋์ฒดํ ์ ์๋๊ฒ ์์ (ref) - ์ถํ ์ถ๊ฐ ์์ - return ๋ฌธ์๋ HTML, ํจ์ ์์ญ์๋ JavaScript
๊ธฐ๋ณธ ์ฝ๋
๊ธฐ๋ณธ ์ฝ๋ (App.js)
import './App.css';
function App() {
const name = "์์ฝฉ๋ฏธ";
return (
<div>
<p>ํ์ ํฉ๋๋ค. {name} ๋!!</p>
</div>
);
}
export default App;
๋ ๋๋ง ํ DOM์ ๋ถ์ผ ๋ ํ ๋ฒ์ ํ๋์ฉ ํ๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด ๋ฐ๋์!!!
๋ถ๋ชจ๋ก ๊ฐ์ธ์ค์ผ ํจ!!!!
- <div> ํ๊ทธ๋ก ๊ฐ์ธ๊ธฐ
- <></> ๐ (์ต๊ทผ ์ ํ(?))
1๏ธโฃ ๋คํญ ์ฐ์ฐ์
์) ๊ฐ์ ํ ํ๋ฉด์ด์ง๋ง ๊ฐ์ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ผ ํ ๋
import './App.css';
function App() {
const name = "๋ฆฌ์กํธ";
return (
<>
{name === "๋ฆฌ์กํธ" ? (<h1>๋ฆฌ์กํธ ์
๋๋ค.</h1>) : (<h1>๋ฆฌ์กํธ๊ฐ ์๋๋๋ค.</h1>)}
</>
);
}
export default App;
2๏ธโฃ AND(๋ ผ๋ฆฌ ์ฐ์ฐ์)
์) ์๋ฒ์ ์ ๋ณด๊ฐ ๋ด๋ ค์๋์ง ์๋ด๋ ค์๋์ง์ ๋ฐ๋ผ ..(async await์์ await ๋ณ์๊ฐ ๋ฐ๋ ๋ ๋ ๋๋ง ํด๋ผ!!)
โจ OR๋ ์ธ ์ ์์ง๋ง ์ด์ ์ด ์์ด์ ์ฃผ๋ก AND๋ฅผ ์
โจ if๋ฌธ๊ณผ ๊ฐ์ ์กฐ๊ฑด๋ฌธ ๋ถ๊ฐ
โจ ์์ด ์ฐธ์ด์ด์ผ ๋ค ํ์ธ (์์ด ๊ฑฐ์ง์ด๋ฉด ์์ ๋ ๋๋ง ์ ํจ)
{name === "๋ฆฌ์กํธ" && <h1>๋ฆฌ์กํธ ํ๋ฉด์ ๊ฐฑ์ ํฉ๋๋ค....</h1>}
CSS style ๋ฃ๊ธฐ
โจ ๋ฆฌ์กํธ์์ DOM ์์์ ์คํ์ผ์ ์ ์ฉํ ๋๋ ๋ฌธ์์ด ํํ๊ฐ ์๋ ๊ฐ์ฒด ํํ๋ก ๋ฃ์ด์ผ ํจ
โจ ์คํ์ผ ์ด๋ฆ ์ค์์ background-color ์ฒ๋ผ ํ์ดํ์ด ํฌํจ๋์ด ์์ผ๋ฉด Camel ํ๊ธฐ๋ฒ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํจ.
๐ฎ VSCode ํ๋ฌ๊ทธ์ธ : vscode-styled-components ์ค์นํ๋ฉด ์๋์์ฑ ๋จ
function App() {
const name = "๋ฆฌ์กํธ";
const style = {
backgroundColor : "#eee",
color : "royalblue",
fontSize : "2em",
};
import './App.css';
function App() {
const member = {
name : "ํ๊ธธ๋",
job : "๊ฐ๋ฐ์",
addr : "์์ธ์ ๊ฐ๋จ๊ตฌ",
gender : "๋จ์ฑ"
};
function getGreeting(user) {
return (user) ? (<h1>ํ์ ํฉ๋๋ค. {member.name}๋!</h1>) : (<h1>ํ์ ํฉ๋๋ค. ๋ฐฉ๋ฌธ์๋.</h1>);
}
return (
// class ํค์๋๋ JSX ๋ฌธ๋ฒ์์๋ className์ผ๋ก ๋ณ๊ฒฝํด์ผ ํจ.(class๋ก ํ๋ฉด ํ๊ทธ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ)
<div className="App">
<p className="title-name">์๋
ํ์ธ์. ์ ๋ {member.name} ์
๋๋ค.</p>
<p className="title-name">์ง์
์ {member.job} ์
๋๋ค.</p>
<p className="title-name">์ฌ๋ ๊ณณ์ {member.addr} ์
๋๋ค.</p>
<p className="title-name">์ฑ๋ณ์ {member.gender} ์
๋๋ค.</p>
<div>{getGreeting(true)}</div>
</div>
);
}
export default App;
'๐จ Frontend > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฎ React - 6. Ref์ DOM (0) | 2023.04.13 |
---|---|
๐ฎ React - 5. ์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2023.04.12 |
๐ฎ React - 4. ํจ์ ์ปดํฌ๋ํธ์์ useState ์ฌ์ฉํ๊ธฐ (2) | 2023.04.11 |
๐ฎ React - 3. ์ปดํฌ๋ํธ(Component) (0) | 2023.04.11 |
๐ฎ React - 1. React ์์ํ๊ธฐ! (2) | 2023.04.10 |