| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- ํผํ๊ทธ
- ๋นํ๊ทธ
- captionside
- ํ์ ์ ๋ ํฐ
- ์ฃผ์
- selectorslevel4
- ๋ชจ๋์นํฐํธ
- texttransform
- formtag
- ํด๋์ค์ ๋ ํฐ
- inlineblock
- wordspacing
- ์ ๋๋ฒ์ ์ ๋ ํฐ
- borderspacing
- ๊ตฌ๊ธํฐํธ
- liststyleimage
- textshadow
- liststyleposition
- ํฅ์ค์ฝ๋
- textdecoration
- gtammertable
- CDN
- bordercollapse
- ์ถ์ฝ
- ๊ทธ๋ฃน์ ๋ ํฐ
- ์์ด๋์ ๋ ํฐ
- ํฐํธ์จ์ดํธ
- fontweight
- borderstyle
- liststyletype
- Today
- Total
็ก์
State (์คํ ์ดํธ) ๋ณธ๋ฌธ
๐ก State
React ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ ์ง ๋ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด.
์ปดํฌ๋ํธ์ '๊ธฐ์ต ์ฅ์น' ์ญํ ์ ํ๋ฉฐ, ์ฌ์ฉ์ ์ํธ์์ฉ์ด๋ ๋คํธ์ํฌ ์๋ต ๋ฑ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฐ๋ค์ ์ ์ฅํ๋ค.
โผ๏ธ ์ฃผ์ ํน์ง
- ๋ณ๊ฒฝ ์ ์๋ ๋ฆฌ๋ ๋๋ง: State ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด React๋ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์๋์ผ๋ก ๋ค์ ๋ ๋๋ง(Re-rendering)ํ๋ค. ํ๋ฉด์ ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ด๋ค.
- ์ปดํฌ๋ํธ ๋ด๋ถ ๊ด๋ฆฌ: ์ธ๋ถ(๋ถ๋ชจ)๋ก๋ถํฐ ์ ๋ฌ๋ฐ๋ Props์ ๋ฌ๋ฆฌ, State๋ ํด๋น ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ง์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ค.
- ๋ถ๋ณ์ฑ(Immutability) ์ ์ง: State๋ ์ง์ ์์ ํด์๋ ์ ๋๋ฉฐ, ๋ฐ๋์ React๊ฐ ์ ๊ณตํ๋ ์ํ ๋ณ๊ฒฝ ํจ์(Setter)๋ฅผ ํตํด์๋ง ์ ๋ฐ์ดํธํด์ผ ํ๋ค.
โผ๏ธ ๊ตฌ์กฐ
useState๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค.
useState('์ด๊ธฐ๊ฐ') ํจ์๋ฅผ ์คํํ๋ฉด ํฌ๊ธฐ๊ฐ 2์ธ ๋ฐฐ์ด(Array)์ ๋ฆฌํดํ๋ฉฐ, ๋ณดํต ๊ฐ๋ฐ์๊ฐ ์ด๋ฆ์ ์ง์ ํด ๊ตฌ์กฐ ๋ถํด ํ ๋น์ผ๋ก ์ฌ์ฉํ๋ค.
- ์ธ๋ฑ์ค 0 (count): ํ์ฌ์ ์ํ ๊ฐ์ ์ฝ๋ ๋ณ์. (๋ฐ์ดํฐ)
- ์ธ๋ฑ์ค 1 (setCount): ํ์ฌ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์. (์ผ๋ฐ์ ์ผ๋ก set + ์ํ์ด๋ฆ ๊ท์น์ผ๋ก ๋ช ๋ช )
โผ๏ธ ์ฌ์ฉํ๋ ์ด์ (์ผ๋ฐ ๋ณ์์์ ์ฐจ์ด)
์ผ๋ฐ ๋ณ์(let, const)๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ React๊ฐ ์ด๋ฅผ ๊ฐ์งํ์ง ๋ชปํด ํ๋ฉด์ด ๊ฐฑ์ ๋์ง ์๋๋ค.
// โ ์๋ชป๋ ์์: ์ผ๋ฐ ๋ณ์ ์ฌ์ฉ
const Counter = () => {
let count = 0;
const plus = () => {
count = count + 1;
console.log(count); // ์ฝ์์์ ๊ฐ์ ์ฆ๊ฐํ์ง๋ง, ํ๋ฉด(UI)์ 0์ ๋ฉ์ถฐ ์์
}
return (
<div>
<h2>{count}</h2>
<button onClick={plus}>+</button>
</div>
);
}
- ๋ฐ๋ฉด State๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ด ๋ฐ๋ ๋๋ง๋ค React๊ฐ UI๋ฅผ ์ ๋ฐ์ดํฐ๋ก ์๋ ๊ฐฑ์ ํ๋ค.
โผ๏ธ State ๊ธฐ๋ณธ ์ฌ์ฉ ๋ฐฉ๋ฒ (useState Hook)
ํจ์ํ ์ปดํฌ๋ํธ์์๋ useState ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ์ ์ธํ๋ค.
import React, { useState } from 'react';
function Counter() {
// ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ํตํด [ํ์ฌ ๊ฐ, ๋ณ๊ฒฝ ํจ์]๋ฅผ ๋ฐํ๋ฐ์
const [count, setCount] = useState(0);
return (
<div>
<p>ํ์ฌ ์นด์ดํธ: {count}</p>
<button onClick={() => setCount(count + 1)}>์ฆ๊ฐ</button>
<button onClick={() => setCount(count - 1)}>๊ฐ์</button>
</div>
);
}
๐โ POINT ๐โ
โ๏ธ React์์ State๋ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ง์ด๊ฒ ํ๋ ํต์ฌ ๊ธฐ๋ฅ์ด๋ค. โ๏ธ
โ๏ธ ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ์๋ฒ ์๋ต์ฒ๋ผ ์ธ์ ๋ ๋ฐ๋ ์ ์๋ ๋ฐ์ดํฐ๋ State๋ก ๊ด๋ฆฌํด์ผ ํ๋ค. โ๏ธ
โ๏ธ ์ง์ ๋ ๋ณ๊ฒฝ ํจ์๋ฅผ ๊ฑฐ์ณ ์์ ํ๊ฒ ์ ๋ฐ์ดํธํด์ผ๋ง ํ๋ฉด์ ์ต์ ์ํ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์๋๋ค. โ๏ธ
๐ Props vs State ์ฐจ์ด์ ๐
| ๊ตฌ๋ถ | Props (ํ๋กญ์ค) | State (์คํ ์ดํธ) |
| ๊ฐ๋ | ์ปดํฌ๋ํธ ์ธ๋ถ(๋ถ๋ชจ)๋ก๋ถํฐ ์ ๋ ฅ๋ฐ๋ ์์ฑ ๊ฐ | ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ํ ๊ฐ |
| ๊ฐ๋ณ์ฑ | ์ฝ๊ธฐ ์ ์ฉ (๋ถ๋ณ) / ์์ ๋ด์์ ์์ ๋ถ๊ฐ | ์์ ๊ฐ๋ฅ / ๋ณ๊ฒฝ ํจ์๋ฅผ ํตํด ์ ๋ฐ์ดํธ ๊ฐ๋ฅ |
| ๊ณตํต์ | ๋ฐ์ดํฐ๊ฐ ๊ฐฑ์ ๋๋ฉด ์ปดํฌ๋ํธ ํจ์๊ฐ ๋ค์ ์คํ๋๋ฉด์ ์๋ก์ด UI๋ฅผ ๋ฆฌํด(๋ ๋๋ง)ํฉ๋๋ค. | |
'<React>' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| React์์ map ํจ์ ์ฌ์ฉํ๊ธฐ (0) | 2026.07.14 |
|---|---|
| Hash URL (0) | 2026.07.14 |
| Event (์ด๋ฒคํธ) (0) | 2026.07.08 |
| Props (Properties, ํ๋กญ์ค) (0) | 2026.07.07 |
| Component (์ปดํฌ๋ํธ) (0) | 2026.07.07 |
