ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ useState๋ ๋ฌด์์ผ๊น์?
useState๋ ์ปดํฌ๋ํธ ์์์ ์ํ(๋ฐ์ดํฐ)๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ด์์.
์ฌ๊ธฐ์ **์ํ(state)**๋ ๋ฌด์์ด๋๋ฉด:
- ํ๋ฉด์ ๋ณด์ฌ์ง๋ ๋ฐ์ดํฐ
- ๋ฒํผ์ ๋๋ ์ ๋ ๋ฐ๋๋ ๊ฐ
๊ฐ๋จํ ๋งํด, ๋ณ๊ฒฝ๋๋ฉด ํ๋ฉด์ด ๋ค์ ๊ทธ๋ ค์ ธ์ผ ํ๋ ๊ฐ์ ์ํ๋ผ๊ณ ํด์.
์ด ์ํ๋ฅผ React์์ ๊ด๋ฆฌํ ๋ **useState**๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐งฉ ์ ์ํ๊ฐ ํ์ํ ๊น์?
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ๋ถ์ด ๊ฐ๋จํ ์นด์ดํฐ ์ฑ์ ๋ง๋ ๋ค๊ณ ์์ํด ๋ณด์ธ์:
- ๋ฒํผ์ ๋๋ฅผ ๋๋ง๋ค ์ซ์๊ฐ 1์ฉ ์ฆ๊ฐํ๊ฑฐ๋ ๊ฐ์ํด์ผ ํด์.
- ์ด ์ซ์๋ฅผ React์์๋ **์ํ(state)**๋ก ๊ด๋ฆฌํด์ผ ํ๋ฉด์ ๋ฐ์๋ ์ ์์ด์.
๐ ๏ธ useState ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
useState๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด์:
import React, { useState } from "react";
function Counter() {
// useState๋ฅผ ์ฌ์ฉํด์ ์ํ ๋ง๋ค๊ธฐ
const [count, setCount] = useState(0); // ์ด๊ธฐ๊ฐ: 0
const increment = () => {
setCount(count + 1); // count๋ฅผ 1 ์ฆ๊ฐ
};
const decrement = () => {
setCount(count - 1); // count๋ฅผ 1 ๊ฐ์
};
return (
<div>
<h1>์นด์ดํฐ: {count}</h1>
<button onClick={increment}>์ฆ๊ฐ</button>
<button onClick={decrement}>๊ฐ์</button>
</div>
);
}
export default Counter;
๐ ์ฝ๋ ์ค๋ช
- useState ์ ์ธ
const [count, setCount] = useState(0);
- count: ์ํ์ ๊ฐ์ด์์. ์ฒ์ ๊ฐ์ 0์ผ๋ก ์ค์ ํ์ด์.
- setCount: ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์์์. ์ด ํจ์๋ฅผ ํธ์ถํ๋ฉด ํ๋ฉด์ด ๋ค์ ๊ทธ๋ ค์ง๋๋ค.
- useState(0): ์ํ์ ์ด๊ธฐ๊ฐ์ 0์ผ๋ก ์ค์ ํ์ด์.
2. ์ํ ๋ณ๊ฒฝํ๊ธฐ
- setCount(count + 1)์ count ๊ฐ์ 1 ์ฆ๊ฐ์์ผ์.
- React๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํ๋ฉด์ ์๋์ผ๋ก ๋ค์ ๋ ๋๋งํด์ ์ต์ ๊ฐ์ ๋ณด์ฌ์ค์.
3. ํ๋ฉด์ ์ํ ๋ณด์ฌ์ฃผ๊ธฐ
<h1>์นด์ดํฐ: {count}</h1>
- ์ํ ๊ฐ์ธ count๋ฅผ ํ๋ฉด์ ํ์ํด์ค๋๋ค.
4. ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด increment๋ decrement ํจ์๊ฐ ์คํ๋๋ฉด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ผ์.
๐ useState๋ฅผ ์ง์์ผ๋ก ๋น์ ํ๊ธฐ
React์ ์ํ ๊ด๋ฆฌ๋ ๋ง์น ์ง์ ์ฒญ์์ ๋น์ทํด์. ๐งน
- ํ์ฌ ์ํ๋ฅผ ๊ธฐ์ตํ๋ ๊ณณ → ๋ฐฉ
- React ์ปดํฌ๋ํธ๋ ์ํ๋ฅผ ๋ฐฉ์ฒ๋ผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํด์.
- ์ํ๋ฅผ ๋ฐ๊ฟ ๋ → ๋ฐฉ ์ฒญ์
- setCount๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ๋ฅผ ๋ฐ๊ฟ ์ ์์ด์.
- ์ฒญ์๋ฅผ ํ๋ฉด ๋ฐฉ์ด ๊นจ๋ํด์ง๋ฏ, ์ํ๊ฐ ๋ฐ๋๋ฉด ํ๋ฉด๋ ๋ฐ๋์ด์.
- React๋ ์๋์ผ๋ก ๋ฐฉ์ ๋ค์ ๋ณด์ฌ์ค์.
- ์ํ๊ฐ ๋ฐ๋ ๋ React๋ ํ๋ฉด์ ์๋กญ๊ฒ ๋ณด์ฌ์ค๋๋ค.
๐ก useState๋ฅผ ์ฌ์ฉํ ๋ ๊ผญ ๊ธฐ์ตํ ์
- setState ํจ์๋ก๋ง ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ด์.
- count = count + 1์ฒ๋ผ ์ง์ ๋ณ๊ฒฝํ๋ฉด ํ๋ฉด์ด ๋ฐ๋์ง ์์์.
- ๋ฐ๋์ **setCount()**๋ฅผ ์ฌ์ฉํด์ผ ํด์!
- ์ด๊ธฐ๊ฐ์ ์ค์ ํด์ผ ํด์.
- useState(0)์ฒ๋ผ ์ํ์ ์ด๊ธฐ๊ฐ์ ์ ํด์ค์ผ ๋ผ์.
- ์ํ๊ฐ ๋ฐ๋๋ฉด ํ๋ฉด์ด ์๋์ผ๋ก ์
๋ฐ์ดํธ๋ผ์.
- ์ด๊ฒ React์ ํฐ ์ฅ์ ์ด์์. ๐
๐งฉ ๋ค๋ฅธ ์์ : ์ ๋ ฅ์ฐฝ ์ํ ๊ด๋ฆฌํ๊ธฐ
useState๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ ฅ์ฐฝ์ ๋ด์ฉ์ ์ค์๊ฐ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด์.
import React, { useState } from "react";
function NameInput() {
const [name, setName] = useState(""); // ์ด๊ธฐ๊ฐ์ ๋น ๋ฌธ์์ด
const handleChange = (e) => {
setName(e.target.value); // ์
๋ ฅ๊ฐ์ ์ํ๋ก ์ ์ฅ
};
return (
<div>
<input
type="text"
value={name}
onChange={handleChange}
placeholder="์ด๋ฆ์ ์
๋ ฅํ์ธ์"
/>
<p>๋น์ ์ ์ด๋ฆ: {name}</p>
</div>
);
}
export default NameInput;
๐ ์ฝ๋ ์ค๋ช
- useState("")
- ์ํ name์ ์ด๊ธฐ๊ฐ์ ๋น ๋ฌธ์์ด ""๋ก ์ค์ ํ์ด์.
- ์
๋ ฅ๊ฐ์ ์ํ๋ก ์
๋ฐ์ดํธ
- onChange ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํด์ ์ ๋ ฅ์ฐฝ์ ๊ฐ์ ์ํ์ ์ ์ฅํด์.
- ํ๋ฉด์ ์ํ ํ์ํ๊ธฐ
- ์ ๋ ฅํ ๊ฐ์ด ๋ฐ๋ก ํ๋ฉด์ ํ์๋ฉ๋๋ค.
๐ ์ ๋ฆฌํ์๋ฉด!
useState๋ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฐ์ดํธํ๋ React์ ๊ธฐ๋ณธ ํ ์ด์์.
- ํ๋ฉด์ ๋ณด์ฌ์ค ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํด์.
- ์ํ๋ฅผ ๋ฐ๊พธ๋ ํจ์(setState)๋ฅผ ํธ์ถํ๋ฉด ํ๋ฉด์ด ์๋์ผ๋ก ๋ค์ ์ ๋ฐ์ดํธ๋ผ์.
'web > react hook' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
useTransition (0) | 2024.12.14 |
---|---|
useSyncExternalStore (1) | 2024.12.14 |
useRef (0) | 2024.12.14 |
useReducer (0) | 2024.12.14 |
useOptimistic (0) | 2024.12.14 |
- Total
- Today
- Yesterday
- useid
- Nextjs
- state
- Store
- ์ต์ ๋ฐ์ดํฐ
- ์คํ์
- experimental_taintuniquevalue
- prefetchdns
- useformstatus
- ์ํ๊ด๋ฆฌ
- usedeferredvalue
- experimental_taintobjectreference
- react dom
- useRef
- experimental
- finddomnode
- Props
- ์ ์ฅ์
- zustand
- useinsertioneffect
- react hook
- ๋ฒ ํ
- flushsync
- ๋ฐ์ดํฐ์ ์ง
- component
- react dom hook
- ์ธ๋ถํฐํธ
- react
- dns-prefetch
- preconnect
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |