ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ useActionState๋ ๋ฌด์์ผ๊น?
React์์๋ ์ํ(state)๋ผ๋ ๊ฐ๋
์ด ์ค์ํด์.
์ํ๋ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ๋ฐ์ดํฐ์ ํ์ฌ ์ํ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ์.
์๋ฅผ ๋ค์ด:
- ์นด์ดํฐ ์ฑ์์ ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ฒ๋ ์ํ
- ๋ก๊ทธ์ธ ํผ์์ ์ ๋ ฅํ๋ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ ์ํ
๊ทธ๋ผ useActionState๋ ๋ญ๋๊ณ ์?
**"์ด๋ค ํ๋(action)์ ๋ฐ๋ผ ์ํ๋ฅผ ๊ด๋ฆฌํ ๋ ์ฐ๋ ๋๊ตฌ"**๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ์.
๐ ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ ์ด์ผ๊ธฐ๋ก ์์๋ณด๊ธฐ
์ฌ๋ฌ๋ถ์ด ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ๋ฅผ ์ด์ํ๋ค๊ณ ์์ํด๋ณผ๊น์? ๐
- ์๋์ด ์์ ํ๋ฒ๊ฑฐ ์ฃผ๋ฌธ์ ํฉ๋๋ค. (์ด๊ฒ ์ก์ !)
- ์ด๋ ๊ฐ๊ฒ๋ ์ฃผ๋ฌธ๋ฐ์ ๋ฉ๋ด๋ฅผ ํ์ธํ๊ณ , ์ฃผ๋ฌธ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ฒ ์ฃ ? (์ด๊ฒ ์ํ ์ ๋ฐ์ดํธ!)
์ฌ๊ธฐ์ ์ค์ํ ํฌ์ธํธ๋ ์ฃผ๋ฌธ(์ก์
)์ ๋ฐ๋ผ ๊ฐ๊ฒ ์ํ(์ฃผ๋ฌธ ๋ฆฌ์คํธ)๊ฐ ๋ณํ๋ค๋ ๊ฒ์ด์์.
์ด๊ฑธ React์ **useActionState**๋ฅผ ์ด์ฉํด์ ํํํ ์ ์์ด์.
๐ ๏ธ ์์ ์ฝ๋๋ก ์ฝ๊ฒ ์ดํดํ๊ธฐ
React ์ฝ๋๋ก ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋ณด์ฌ๋๋ฆด๊ฒ์:
import React, { useActionState } from 'react';
function BurgerShop() {
// useActionState๋ฅผ ์ด์ฉํด์ ์ฃผ๋ฌธ ์ํ๋ฅผ ๊ด๋ฆฌํด์
const [orders, addOrder] = useActionState(
(prevOrders, newOrder) => [...prevOrders, newOrder], // ์ํ๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ก์ง
[] // ์ด๊ธฐ ์ํ๋ ๋น ์ฃผ๋ฌธ ๋ฆฌ์คํธ
);
// ์ฃผ๋ฌธ์ ์ถ๊ฐํ๋ ํจ์
const handleOrder = (menu) => {
addOrder(menu); // addOrder๋ฅผ ํธ์ถํ๋ฉด ์ ์ฃผ๋ฌธ์ด ์ํ์ ๋ฐ์๋ผ์!
};
return (
<div>
<h1>๐ ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ</h1>
<button onClick={() => handleOrder('์น์ฆ๋ฒ๊ฑฐ')}>์น์ฆ๋ฒ๊ฑฐ ์ฃผ๋ฌธ</button>
<button onClick={() => handleOrder('๋ถ๊ณ ๊ธฐ๋ฒ๊ฑฐ')}>๋ถ๊ณ ๊ธฐ๋ฒ๊ฑฐ ์ฃผ๋ฌธ</button>
<button onClick={() => handleOrder('๊ฐ์ํ๊น')}>๊ฐ์ํ๊น ์ฃผ๋ฌธ</button>
<h2>๐ ์ฃผ๋ฌธ ๋ฆฌ์คํธ</h2>
<ul>
{orders.map((order, index) => (
<li key={index}>{order}</li> // ์ฃผ๋ฌธ๋ ๋ฉ๋ด๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ค์
))}
</ul>
</div>
);
}
export default BurgerShop;
๐ ์ฝ๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋ ๊ฑธ๊น?
- useActionState:
- ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ํ๋ฅผ ์ด๋ป๊ฒ ์
๋ฐ์ดํธํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํจ์์์.
์ฌ๊ธฐ์๋ ๊ธฐ์กด ์ฃผ๋ฌธ ๋ฆฌ์คํธ์ ์ ์ฃผ๋ฌธ์ ์ถ๊ฐํ๋ ๋ก์ง์ด์ฃ . - ๋ ๋ฒ์งธ ์ธ์๋ ์ด๊ธฐ ์ํ์์. ์ฒ์์๋ ์๋ฌด ์ฃผ๋ฌธ๋ ์์ผ๋๊น []๋ก ๋น์ด์์ด์.
- ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ํ๋ฅผ ์ด๋ป๊ฒ ์
๋ฐ์ดํธํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํจ์์์.
- addOrder:
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด handleOrder๊ฐ ํธ์ถ๋๊ณ , addOrder๋ฅผ ํตํด ์ํ๊ฐ ์ ๋ฐ์ดํธ๋ผ์.
- ์๋ฅผ ๋ค์ด "์น์ฆ๋ฒ๊ฑฐ"๋ฅผ ํด๋ฆญํ๋ฉด ์ํ๊ฐ ['์น์ฆ๋ฒ๊ฑฐ']๋ก ๋ฐ๋์ฃ .
- ์ํ ์
๋ฐ์ดํธ ๊ฒฐ๊ณผ:
- ์ฃผ๋ฌธ ๋ฆฌ์คํธ๊ฐ ํ๋ฉด์ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ผ์!
๐งฉ ํ๋ง๋๋ก ์ ๋ฆฌํ์๋ฉด!
useActionState๋ ์ด๋ค ํ๋(์ก์
)์ ๋ฐ๋ผ ์ํ๋ฅผ ์
๋ฐ์ดํธํ ๋ ์ฌ์ฉํ๋ ๋๊ตฌ์์.
ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ์์ **์ฃผ๋ฌธ(์ก์
)**์ด ๋ค์ด์ค๋ฉด **์ฃผ๋ฌธ ๋ฆฌ์คํธ(์ํ)**๊ฐ ๋ฐ๋๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ !
'web > react hook' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
useEffect (1) | 2024.12.14 |
---|---|
useDeferredValue (0) | 2024.12.14 |
useDebugValue (0) | 2024.12.14 |
useContext (0) | 2024.12.14 |
useCallback (0) | 2024.12.14 |
- Total
- Today
- Yesterday
- ๋ฐ์ดํฐ์ ์ง
- react dom
- react
- ์คํ์
- component
- Nextjs
- usedeferredvalue
- useinsertioneffect
- ์ต์ ๋ฐ์ดํฐ
- preconnect
- Store
- finddomnode
- flushsync
- experimental_taintobjectreference
- experimental
- zustand
- Props
- react dom hook
- ์ํ๊ด๋ฆฌ
- react hook
- state
- useid
- useRef
- dns-prefetch
- experimental_taintuniquevalue
- ์ธ๋ถํฐํธ
- useformstatus
- ์ ์ฅ์
- prefetchdns
- ๋ฒ ํ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |