ํฐ์คํ ๋ฆฌ ๋ทฐ
Language/React
[React ์ ๋ฌธ Day 1] ์ปดํฌ๋ํธ, JSX, ๋ถ๋ณ์ฑ ๊ฐ๋จ ์ ๋ฆฌ
์ฑ._. 2025. 1. 20. 23:471. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋?
- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ํจ์๋ค.
- ์ปดํฌ๋ํธ๋ ํ๋ฉด์ ์ด๋ป๊ฒ ํํ๋ ์ง๋ฅผ ์ ์ํ๋ฉฐ, React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํ๋ค.
1-1. ํจ์ํ ์ปดํฌ๋ํธ ์์
// props๋ผ๋ ์
๋ ฅ์ ๋ฐ์ React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํ
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// ๊ฐ๋จํ ์์
function App() {
return <div>hello</div>;
}
2. ๋ฆฌ์กํธ ์ค์ต ๋ด์ฉ

- ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋ ๋ฐ๋์ ๊ฐ์ฅ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ๋ง๋ค์ด์ผ ํ๋ค.
- ํด๋๋ ์๋ฌธ์๋ก ์์ํ๋ ์นด๋ฉ์ผ์ด์ค๋ก ์์ฑํ๊ณ ,
์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ํ์ผ์ ๋๋ฌธ์๋ก ์์ํ๋ ์นด๋ฉ์ผ์ด์ค๋ก ์ด๋ฆ์ ์ง๋๋ค. - ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ HTML ์์์ ์ฌ์ฉํ ๋ {} ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ค.
=> ๋ฆฌํด๋ฌธ ์ดํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฐ๊ธฐ ์ํด {}๋ก ๊ฐ์ผ๋ค.
2-2. ๋ถ๋ชจ-์์ ์ปดํฌ๋ํธ
- ์์์์ : ๋ถ๋ชจ ์ปดํฌ๋ํธ
- ํ์ด์ง๋ ์ปดํฌ๋ํธ : ์์ ์ปดํฌ๋ํธ
- ๊ธฐ๋ณธ ํ์
// src/App.js
import React from "react";
function Child() {
return <div>๋๋ ์์์
๋๋ค.</div>;
}
function App() {
return <Child />;
}
export default App;
- ์ฐ์ต ๋ฌธ์
3๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ํ ์๋ฒ์ง, ์๋ง, ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ณด๊ณ ์๋ก ์ฐ๊ฒฐ์ํค๊ธฐ.
3. JSX (JavaScript XML)
- ์ ์: ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ(ํ๋ฉด์ ๊ทธ๋ ค์ง๋ HTML์ ์์)๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ฌธ๋ฒ.
- ์ค์ต ์ JSX์ ๊ท์น๋ค
๋๋ณด๊ธฐ
๋๋ณด๊ธฐ
๋๋ณด๊ธฐ
1) ํ๊ทธ๋ ๊ผญ ๋ซ์์ฃผ๊ธฐ
// input ํ๊ทธ๋ฅผ ๋ซ์ง ์๊ณ ๋ฃ์ด๋ณผ๊ฑฐ์์!
function App() {
return (
<div className="App">
<input type='text'>
</div>
);
}
๐๐ป
<input type='text'/>
2) ๋ฌด์กฐ๊ฑด ํ๊ฐ์ ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํ๊ธฐ
import "./App.css";
function App() {
return (
<p>์๋
ํ์ธ์! ๋ฆฌ์กํธ ๋ฐ์
๋๋ค :)</p>
<div className="App">
<input type='text'/>
</div>
);
}
export default App;
๐๐ป
import "./App.css";
function App() {
return (
<div className="App">
<p>์๋
ํ์ธ์! ๋ฆฌ์กํธ ๋ฐ์
๋๋ค :)</p>
<input type="text" />
</div>
);
}
export default App;
3) JSX์์ javascript ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ค๊ดํธ๋ฅผ ์ด๋ค.
function App() {
const cat_name = 'perl';
return (
<div>
hello {cat_name}!
</div>
);
}
import React from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
const number = 1;
return (
<div className="App">
<p>์๋
ํ์ธ์! ๋ฆฌ์กํธ ๋ฐ์
๋๋ค :)</p>
{/* JSX ๋ด์์ ์ฝ๋ ์ฃผ์์ ์ด๋ ๊ฒ ์๋๋ค :) */}
{/* ์ผํญ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ด์ */}
<p>{number > 10 ? number+'์ 10๋ณด๋ค ํฌ๋ค': number+'์ 10๋ณด๋ค ์๋ค'}</p>
</div>
);
}
export default App;
4) class ๋์ className
<div className="App">
5) ์ธ๋ผ์ธ์ผ๋ก style ์ฃผ๊ธฐ
[HTML]
<p style="color: orange; font-size: 20px;">orange</p>
[JSX]
// ์ค๊ดํธ๋ฅผ ๋ ๋ฒ ์ฐ๋ ์ด์ ? ๊ฐ์ฒด๋ ์๋ฐ์คํฌ๋ฆฝํธ๋๊น์!
// ์ด๋ ๊ฒ ์ฐ๊ฑฐ๋,
<p style={{color: 'orange', fontSize: '20px'}}>orange</p>
//ํน์ ์คํ์ผ ๊ฐ์ฒด๋ฅผ ๋ณ์๋ก ๋ง๋ค๊ณ ์ธ ์ ์์ด์!
function App() {
const styles = {
color: 'orange',
fontSize: '20px'
};
return (
<div className="App">
<p style={styles}>orange</p>
</div>
);
}
4. ๋ถ๋ณ์ฑ (Immutability)
- ๋ถ๋ณ์ฑ์ ๊ฐ๋
- ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํฉ → ๋ถ๋ณ์ฑ์ด ์๋ ๊ฒฝ์ฐ.
- ๋ณ๊ฒฝ ๋ถ๊ฐํ ์ํฉ → ๋ถ๋ณ์ฑ์ด ์๋ ๊ฒฝ์ฐ.
- ์ค์ํ ์ : ๋ถ๋ณ์ฑ์ ์ ์งํด์ผ ํ๋ค.
- ๋ถ๋ณ์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ
- spread operator ์ฌ์ฉ: ๊ธฐ์กด ์ํ๋ฅผ ๋ณต์ฌํ ๋ค ์ ๋ฐ์ดํธ.
4-1. ๋ฆฌ์กํธ์์ ๋ถ๋ณ์ฑ์ด ๊ฐ์ง๋ ์์โญ๏ธโญ๏ธ
- ๋ฆฌ์กํธ๋ ํ๋ฉด ๋ฆฌ๋ ๋๋ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ๋ state ๋ณํ๋ฅผ ํ์ธ.
- state๊ฐ ๋ณํจ → ๋ฆฌ๋ ๋๋ง ๋ฐ์.
- state๊ฐ ๋ณํ์ง ์์ → ๋ฆฌ๋ ๋๋ง ์์.
- ๋ณํ ํ์ธ ๋ฐฉ์: state์ ๋ณํ ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋น๊ต.
'Language > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [โ๏ธ] useState : ํจ์ํ ์ ๋ฐ์ดํธ (0) | 2025.01.30 |
|---|---|
| [โ๏ธ] CSS in JS(Styled-components, GlobalStyles (1) | 2025.01.27 |
| [โ๏ธ] useState() ๋ฅผ ์ ์ธ๊น? (0) | 2025.01.22 |
| [React ์ ๋ฌธ Day 2] state, ๋ ๋๋ง, Virtual DOM ๊ฐ๋จ ์ ๋ฆฌ (0) | 2025.01.21 |
| [โ๏ธ] ์นด์ดํฐ ์ฑ ๋ง๋ค์ด๋ณด๊ธฐ (0) | 2025.01.21 |