JSX(JavaScript XML)
React์์ ์ฌ์ฉ๋๋ Javascript์ ํ์ฅ ๋ฌธ๋ฒ์ผ๋ก, HTML๊ณผ ์ ์ฌํ ํํ๋ก Javascript ์ฝ๋๊ฐ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
๋ฌด์กฐ๊ฑด jsx๋ฅผ ์ธ ํ์๋ ์์ง๋ง, ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
๊ท์น
- return๋ฌธ ์์ HTML ํํ๋ก ์์ฑ
- ๋ ์ค ์ด์ ์์ฑํ ๊ฒฝ์ฐ ์๊ดํธ๋ก ๋ฌถ์ด์ผ ํจ
- ํ๋์ ์ต์์ ์์๋ก ๋ฌถ์ด์ค์ผ ํจ
๋ด๋ถ์ ์ผ๋ก๋ Javascript ๊ฐ์ฒด๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์, ํ๋์ ๋ฐฐ์ด๋ก ๊ฐ์ธ์ง ์์ ํจ์์์๋ ๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ์ ์๊ธฐ ๋๋ฌธ์ <div></div>๋ <></>(Fragment : ๋ธ๋ผ์ฐ์ ์ html ํธ๋ฆฌ ๊ตฌ์กฐ์์ ํ์ ์์ด ๊ทธ๋ฃนํ)๋ก๋ผ๋ ๊ฐ์ธ์ค์ผ ํ๋ค. - ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด Javascript ์ฝ๋๋ฅผ ์์ฑํจ
// JSX ๋ฌธ๋ฒ ์ฌ์ฉ
function App() {
return (
<h1>์๋
ํ์ธ์</h1>
);
}
// JSX ๋ฌธ๋ฒ ์ฌ์ฉX
function App() {
return React.createElement("h1", null, "์๋
ํ์ธ์");
}
์ง๊ธ์ ํ์ค๋ง ์์ฑํ๊ธฐ ๋๋ฌธ์ return ๋ค ์๊ดํธ๋ฅผ ์๋ตํด๋ ์๊ด์์ง๋ง ๋ ์ค ์ด์์ ๊ฒฝ์ฐ ์์ ๊ท์น 2๋ฒ๊ณผ 3๋ฒ์ ๊ผญ ์ง์ผ ์์ฑํด์ผ ํ๋ค.
function App(){
return (
<div>ํจ์ํ ์ปดํฌ๋ํธ
<p>์์ ์์ 1</p>
<p>์์ ์์ 2</p>
<div>์์ ์์ 3
<p>์์์ ์์์์</p>
</div>
</div>
);
}
4๋ฒ์ธ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ ์์ฑํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
๊ฐ๋จํ ์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ฉฐ, return๋ฌธ์ ์์์ ๋ณ์๋ฅผ ์ ์ธํด return๋ฌธ ๋ด์์ ๋ค์๊ณผ ๊ฐ์ด {}์ ๋ณ์์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฑ ๋ค์ํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
function App(){
const pTag = document.querySelectorAll('p');
const pCount = pTag.length
return (
<div>ํจ์ํ ์ปดํฌ๋ํธ
<p>์์ ์์ 1</p>
<p>์์ ์์ 2</p>
<div>์์ ์์ 3
<p>์์์ ์์์์</p>
<p>1+1์ ๊ฐ์?</p>
<p>= {1+1}</p>
</div>
<div>p์์์ ๊ฐ์๋ {pCount}๊ฐ</div>
</div>
);
}
์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋จํ๊ฒ ํ๋ฒ๊ฑฐ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
์ฐ์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์ ์ ํ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ด๋ณด์ด๋ ํจ์ํ ์ปดํฌ๋ํธ ํ๋๋ฅผ ์์ฑํ๋ค.
์ปดํฌ๋ํธ ๊ตฌ์กฐX
App.jsx
function App(){
return (
<>
<div className="bread">
๋ฐ๊ฐ๋ฃจ
<span>๋ฌผ</span>
<span>๊ณ๋</span>
<span>์ด์คํธ</span>
</div>
<div className="patty meat">
์๊ณ ๊ธฐ
<span>ํ์ถ</span>
<span>์๊ธ</span>
</div>
<div className="lettuce">
์์ฌ๊ท
<span>์ค๊ธฐ</span>
</div>
<div className="tomato">
๊ป์ง
<span>๊ณผ์ก</span>
<span>์จ์</span>
</div>
<div className="cheese">
์ฐ์
<span>์๊ธ</span>
<span>์์</span>
</div>
<div className="bread">
๋ฐ๊ฐ๋ฃจ
<span>๋ฌผ</span>
<span>๊ณ๋</span>
<span>์ด์คํธ</span>
</div>
</>
);
}
App.css
* {
box-sizing: border-box;
text-align: center;
}
body {
justify-content: center;
}
span {
margin-left: 1em;
}
.bread {
background-color: orange;
}
.patty{
background-color: brown;
}
.lettuce {
background-color: green;
}
.tomato {
background-color: red;
}
.cheese {
background-color: yellow;
color:black;
}
ํจ์ ์ปดํฌ๋ํธ ๋ง๋ค์ด์ ์ฌ์ฉํ๊ธฐ
App.jsx
import "./App.css";
function App() {
return (
<>
<Bread />
<Patty />
<Lettuce />
<Tomato />
<Cheese />
<Bread />
</>
);
}
function Bread() {
return (
<div className="bread">
๋ฐ๊ฐ๋ฃจ
<span>๋ฌผ</span>
<span>๊ณ๋</span>
<span>์ด์คํธ</span>
</div>
);
}
function Patty() {
return (
<div className="patty meat">
์๊ณ ๊ธฐ
<span>ํ์ถ</span>
<span>์๊ธ</span>
</div>
);
}
function Lettuce() {
return (
<div className="lettuce">
์์ฌ๊ท
<span>์ค๊ธฐ</span>
</div>
);
}
function Tomato() {
return (
<div className="tomato">
๊ป์ง
<span>๊ณผ์ก</span>
<span>์จ์</span>
</div>
);
}
function Cheese() {
return (
<div className="cheese">
์ฐ์
<span>์๊ธ</span>
<span>์์</span>
</div>
);
}
export default App;
์ฃผ์ํด์ผํ ์ ์ ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ฌด์กฐ๊ฑด ๋๋ฌธ์๋ก. ์์ํด์ผํ๋ค๋ ๊ฒ์ด๋ค...
๊ทธ๋ฆฌ๊ณ ์์์ ์ ์ฉํ๊ธฐ ์ํด className์ผ๋ก ํด๋์ค๋ฅผ ๋ถ์ฌํด์คฌ๋๋ฐ ๊ทธ ์ด์ ๋ ์ด๋ฏธ js์์ class๊ฐ ์์ฝ์ด๋ก ์ง์ ๋์ด์๊ธฐ ๋๋ฌธ์ className์ ์ ์ฉํด์ผ ํ๋ค. (class์ฌ๋ ์ ์ฉ์ ๋์ง๋ง ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๊ฐ ๋ง์ด ๋ฐ ์ ์๋ค.)
์๊น ์ฝ๋๋ณด๋ค ๊ธธ์ด์ก์ง๋ง ์ด์ ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด ๋ค๋ฅธ ๊ตฌ์กฐ์ ํ๋ฒ๊ฑฐ๋ฅผ ๋ง๋ค์ด๋ณผ ์๋ ์๋ค.
๋ฌผ๋ก ์ด๊ฒฝ์ฐ์๋ ์ฌ๋ฃ๋ฅผ ๋ง์ด ๋ฃ์ผ๋ฉด ๋ณด๊ธฐ ์ข ๋ณต์กํด์ง ์๋ ์๋ค.
์๋ก์ด ๋ฒ๊ฑฐ ๋ฉ๋ด๋ฅผ ๋ง๋ค๋ฏ์ด ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํด ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ ์๋ค.
import "./App.css";
function App() {
return (
<>
<ClassicBurger />
</>
);
}
function ClassicBurger() {
return (
<>
<p>๊ธฐ๋ณธ ๋ฒ๊ฑฐ</p>
<Bread />
<Patty />
<Lettuce />
<Tomato />
<Cheese />
<Bread />
</>
);
}
function DoubleCheeseBurger() {
return (
<>
<p>๋๋ธ์น์ฆ๋ฒ๊ฑฐ</p>
<Bread />
<Patty />
<Cheese />
<Patty />
<Cheese />
<Bread />
</>
);
}
/* ๋ฒ๊ฑฐ ์ฌ๋ฃ ์ปดํฌ๋ํธ๋ค์ ์๋ต */
export default App;
'react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React / ์ํ๊ด๋ฆฌ (0) | 2025.04.04 |
---|---|
React / map, filter๋ก ๋ฐ๋ณต ๋ ๋๋งํ๊ธฐ (0) | 2025.04.03 |
React / ์ปดํฌ๋ํธ (0) | 2025.04.03 |
React / ํ๋ก์ ํธ ์์ฑ (0) | 2025.04.03 |
React / Node.js, npm, npx ์ค์น ๋ฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (Mac) (0) | 2025.04.02 |