ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ use๋ ๋ฌด์์ธ๊ฐ์?
**use**๋ React์์ **Promise(๋น๋๊ธฐ ์์
)**๋ฅผ ๋ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ์ด์์.
๋น๋๊ธฐ ์์
์ ๋ณดํต ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋ API ์์ฒญ์ ํ ๋ ์ฌ์ฉํ์ฃ .
๐ ๋น์ ๋ก ์ดํดํ๊ธฐ: ํผ์ ๋ฐฐ๋ฌ ์ด์ผ๊ธฐ
์ฌ๋ฌ๋ถ์ด ํผ์ ๊ฐ๊ฒ์์ ํผ์๋ฅผ ์ฃผ๋ฌธํ๋ค๊ณ ์๊ฐํด ๋ด์. ๐
- ๊ธฐ์กด ๋ฐฉ์
- ํผ์๊ฐ ์์ฑ๋ ๋๊น์ง ๊ณ์ ์ฃผ๋ฐฉ์ ๊ฐ์ "ํผ์ ๋ค ๋๋์?" ํ๊ณ ๋ฌผ์ด๋ณด๋ ์ํฉ์ด์์.
- ์ฆ, ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๊ณ์ ์ํ๋ฅผ ์ฒดํฌํ๊ณ ์ถ๊ฐ ์์ ์ด ํ์ํ์ฃ .
- use๋ฅผ ์ฌ์ฉํ๋ฉด?
- **use**๋ ํผ์๊ฐ ์์ฑ๋ ๋๊น์ง ์์์ ๊ธฐ๋ค๋ ค์ค๋๋ค.
- ์ฃผ๋ฐฉ์ ๋ฌผ์ด๋ณด์ง ์์๋ ํผ์๊ฐ ๋์ค๋ฉด ๋ฐ๋ก ๊ฐ์ ธ๋ค ์ค์.
- ์ฆ, ๋ฐ์ดํฐ๊ฐ ์ค๋น๋ ๋๊น์ง ์์์ ๊ธฐ๋ค๋ฆฌ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ฉด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ด์์.
๐ ๏ธ use ์ฌ์ฉ๋ฒ
use๋ **๋น๋๊ธฐ ์์
(Promise)**์ ๋ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ ์์ ๋ฅผ ํตํด ์ดํดํด ๋ณผ๊น์?
1. ๊ธฐ์กด ๋ฐฉ์: ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
React์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ๋ณดํต useEffect์ useState๋ฅผ ์ฌ์ฉํ์ด์.
import React, { useState, useEffect } from 'react';
function App() {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchData();
}, []);
async function fetchData() {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const result = await response.json();
setData(result);
setLoading(false);
}
if (loading) return <p>๋ก๋ฉ ์ค...</p>;
return <div>๋ฐ์ดํฐ: {data.title}</div>;
}
export default App;
์ค๋ช :
- useState์ useEffect๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ก๋ฉ ์ํ๋ฅผ ์ฒดํฌํด์ผ ํ์ด์.
- ์ฝ๋๊ฐ ๋ณต์กํ๊ณ , ๋ก๋ฉ ์ํ๋ฅผ ๊ด๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ท์ฐฎ์ฃ ?
2. use๋ฅผ ์ฌ์ฉํด์ ๋ ๊ฐ๋จํ๊ฒ
React 18์์ **use**๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฐ ๋น๋๊ธฐ ์์ ์ด ํจ์ฌ ๊ฐ๋จํด์ง๋๋ค.
import React, { use } from 'react';
const dataPromise = fetch('https://jsonplaceholder.typicode.com/posts/1').then((res) =>
res.json()
);
function App() {
const data = use(dataPromise); // use๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด
return <div>๋ฐ์ดํฐ: {data.title}</div>;
}
export default App;
๐ ์ฝ๋ ์ค๋ช
- dataPromise
- ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ Promise๋ฅผ ๋ณ์์ ์ ์ฅํด์.
- use๋ฅผ ์ฌ์ฉ
- use(dataPromise)๋ฅผ ํธ์ถํ๋ฉด React๊ฐ ์์์ Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํด์ค๋๋ค.
- ๋ ์ด์ **useState**๋ **useEffect**๋ฅผ ์ฌ์ฉํด์ ๋ก๋ฉ ์ํ๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ด์!
- ๊ฒฐ๊ณผ
- ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ฉด ๋ฐ๋ก ํ๋ฉด์ ํ์๋ฉ๋๋ค.
๐ use๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ์
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ ธ์
- useEffect์ useState๋ก ๋ณต์กํ๊ฒ ์์ฑํ ํ์๊ฐ ์์ด์.
- ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ฝ๋๊ฐ ํ ์ค๋ก ๊น๋ํด์ง๋๋ค.
- ๋ก๋ฉ ์ํ ๊ด๋ฆฌ๊ฐ ํ์ ์์ด์
- React๊ฐ Promise๊ฐ ๋๋ ๋๊น์ง ์์์ ๊ธฐ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ก๋ฉ ์ํ๋ฅผ ๋ฐ๋ก ๊ด๋ฆฌํ์ง ์์๋ ๋ผ์.
- ๋น๋๊ธฐ ์์
์ ๋ ์ง๊ด์ ์ผ๋ก ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ ์ด ๋๊ธฐ ์ฝ๋์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
โ ๏ธ ์ฃผ์ํ ์
- React 18 ์ด์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- use๋ React 18 ๋ฒ์ ๋ถํฐ ์ฌ์ฉํ ์ ์์ด์.
- ์๋ฒ ์ปดํฌ๋ํธ์์ ์ฃผ๋ก ์ฌ์ฉ
- ํ์ฌ๋ React์ **์๋ฒ ์ปดํฌ๋ํธ(Server Component)**์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์์๋ ์์ง ๊ณต์์ ์ผ๋ก ์ง์๋์ง ์์์.
- ์ค๋ฅ ์ฒ๋ฆฌ
- Promise๊ฐ ์คํจํ ๊ฒฝ์ฐ(์: ์๋ฒ ์ค๋ฅ) ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํด์ค์ผ ํฉ๋๋ค.
๐ ํ ์ค ์์ฝ
**use**๋ Promise๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ ๋น๋๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๋ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ React์ ์ต์ ๊ธฐ๋ฅ์ด์์.
๐ ๋ง๋ฌด๋ฆฌ
React์ **use**๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ ์ฝ๊ฒ ๊ฐ์ ธ์ค๊ณ , ์ฝ๋๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ด์.
ํ์ง๋ง ์์ง ์๋ฒ ์ปดํฌ๋ํธ์์ ์ฃผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์, ์์ผ๋ก React ์ํ๊ณ์์ ๋์ฑ ์ค์ํ ๊ธฐ๋ฅ์ด ๋ ๊ฑฐ์์. ๐
'web > react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
experimental_taintUniqueValue (0) | 2024.12.16 |
---|---|
experimental_taintObjectReference (0) | 2024.12.16 |
startTransition (0) | 2024.12.16 |
memo (0) | 2024.12.16 |
lazy (0) | 2024.12.16 |
- Total
- Today
- Yesterday
- react
- ์คํ์
- ์ธ๋ถํฐํธ
- useformstatus
- flushsync
- state
- ๋ฒ ํ
- react dom hook
- ์ ์ฅ์
- finddomnode
- experimental_taintobjectreference
- experimental_taintuniquevalue
- react dom
- Store
- experimental
- ์ํ๊ด๋ฆฌ
- useRef
- useid
- preconnect
- Props
- ์ต์ ๋ฐ์ดํฐ
- Nextjs
- zustand
- prefetchdns
- react hook
- usedeferredvalue
- dns-prefetch
- component
- ๋ฐ์ดํฐ์ ์ง
- useinsertioneffect
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |