ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ useDeferredValue๋ ๋ฌด์์ผ๊น?
useDeferredValue๋ ๊ฐ์ ์กฐ๊ธ ๋ฆ๊ฒ ์ ๋ฐ์ดํธํด์ ํ๋ฉด ๋ ๋๋ง ์๋๋ฅผ ์ต์ ํํ๋ ๋๊ตฌ์์.
์ ํ์ํ ๊น์?
React์์๋ ์
๋ ฅ์ด ๋น ๋ฅด๊ฒ ๋ฐ๋ ๋๋ง๋ค ํ๋ฉด์ ๋ฐ๋ก๋ฐ๋ก ๋ ๋๋งํ๋๋ฐ,
๋๋ฌด ๋ง์ ์์
์ด ๋์์ ์ผ์ด๋๋ฉด ํ๋ฉด์ด ๋๋ ค์ง ์ ์๊ฑฐ๋ ์.
์ด๋ useDeferredValue๋ฅผ ์ฌ์ฉํ๋ฉด ์ฐ์ ์์๋ฅผ ๋๋ ์ ๋ ๋๋ง์ ํจ์จ์ ์ผ๋ก ํด์ค์.
๐ข ๊ฑฐ๋ถ์ด์ ํ ๋ผ ์ด์ผ๊ธฐ๋ก ์ดํดํด๋ณด๊ธฐ
๊ฑฐ๋ถ์ด์ ํ ๋ผ๊ฐ ์ฐ์ฑ ์ ํ๊ณ ์์ด์. ๐ข๐
- ํ ๋ผ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ด๊ฐ๊ณ ,
- ๊ฑฐ๋ถ์ด๋ ์ฒ์ฒํ ๋ฐ๋ผ์ต๋๋ค.
์ฌ๊ธฐ์ **"ํ ๋ผ"**๋ ์ ๋ ฅ๊ฐ์ด๊ณ , **"๊ฑฐ๋ถ์ด"**๋ useDeferredValue๋ก ์ฒ๋ฆฌ๋๋ ๊ฐ์ด์์.
๐ ์ค์ํ ์์: ๊ฒ์์ฐฝ
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ๋ถ์ด ์ผํ๋ชฐ์์ ๋ฌผ๊ฑด์ ๊ฒ์ํ๋ค๊ณ ํด๋ณผ๊ฒ์. ๐
- ์ ๋ ฅ์ฐฝ์ ๊ฒ์์ด๋ฅผ ๋น ๋ฅด๊ฒ ํ์ดํํฉ๋๋ค.
- ์ ๋ ฅํ ๋๋ง๋ค ํ๋ฉด์ด ์ฆ์ ๋ ๋๋ง๋๋ฉด ํ๋ฉด์ด ๋ฒ๋ฒ ๊ฑฐ๋ฆด ์ ์์ด์.
- ์ด๋ **useDeferredValue**๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒ์์ด ์
๋ ฅ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ณ ,
๊ฒฐ๊ณผ๋ฅผ ๋ ๋๋งํ๋ ๋ถ๋ถ๋ง ์กฐ๊ธ ์ฒ์ฒํ ๋ฐ๋ผ์ค๋๋ก ํ ์ ์์ด์.
๐ ๏ธ useDeferredValue ์ฝ๋ ์์
๊ฐ๋จํ ๊ฒ์์ฐฝ ์์ ๋ฅผ ๋ณด์ฌ๋๋ฆด๊ฒ์:
import React, { useState, useDeferredValue } from "react";
function SearchApp() {
const [searchInput, setSearchInput] = useState(""); // ์
๋ ฅ๊ฐ ์ํ
const deferredSearch = useDeferredValue(searchInput); // ์
๋ ฅ๊ฐ์ ์กฐ๊ธ ๋ฆ๊ฒ ๋ฐ๋ผ์ค๋ ๊ฐ
const handleInputChange = (e) => {
setSearchInput(e.target.value); // ์
๋ ฅ๊ฐ ์ฆ์ ์
๋ฐ์ดํธ
};
return (
<div>
<h1>๐ ๊ฒ์์ฐฝ</h1>
<input
type="text"
placeholder="๊ฒ์์ด๋ฅผ ์
๋ ฅํ์ธ์"
onChange={handleInputChange}
/>
<SearchResults query={deferredSearch} />
</div>
);
}
function SearchResults({ query }) {
// ์ฌ๊ธฐ์๋ deferredSearch ๊ฐ์ ๋ฐ๋ผ ๋ ๋๋ง์ด ์กฐ๊ธ ๋ฆ๊ฒ ์ด๋ฃจ์ด์ ธ์
return (
<div>
<h3>๐ ๊ฒ์ ๊ฒฐ๊ณผ:</h3>
<p>์
๋ ฅ๋ ๊ฒ์์ด: {query}</p>
</div>
);
}
export default SearchApp;
๐ ์ฝ๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น?
- searchInput
- setSearchInput์ผ๋ก ์ ๋ ฅ๊ฐ์ด ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
- useDeferredValue
- useDeferredValue(searchInput)์ ์ ๋ ฅ๊ฐ์ ์กฐ๊ธ ๋ฆ๊ฒ ๋ฐ๋ผ์ต๋๋ค.
- ๊ทธ๋์ ํ๋ฉด์ ๋ ๋๋ง๋๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ ์ ๋ ฅ๊ฐ๊ณผ ์ด์ง ๋ฆ๊ฒ ๋ฐ์ํด์.
- ๊ฒฐ๊ณผ
- ์ ๋ ฅ์ฐฝ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ์ง๋ง,
- ํ๋ฉด์ ๋ณด์ฌ์ง๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ ์ฑ๋ฅ์ ๋ฌด๋ฆฌ๊ฐ ๊ฐ์ง ์๊ฒ ์ฒ์ฒํ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๐ ์ธ์ ์ฌ์ฉํ ๊น?
useDeferredValue๋ ํนํ ๋ณต์กํ ํ๋ฉด์์ ์ ์ฉํด์.
- ์ค์๊ฐ ๊ฒ์
- ๋ฐ์ดํฐ ๋ชฉ๋ก ๋ ๋๋ง
- ์ ๋ ฅ๊ฐ์ ๋ฐ๋ผ ๋ง์ ์ปดํฌ๋ํธ๊ฐ ๋์์ ์ ๋ฐ์ดํธ๋ ๋
์ด๋ฐ ์ํฉ์์ ํ๋ฉด์ด ๋๋ ค์ง๋ ๊ฑธ ๋ฐฉ์งํด ์ฃผ๋๊น ์ฌ์ฉ์ ๊ฒฝํ์ด ๋ ์ข์์ ธ์!
๐ ํ ์ค ์์ฝ
useDeferredValue๋ ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ์ด์ง ์ง์ฐ์์ผ์ ํ๋ฉด ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํด์ฃผ๋ ๋๊ตฌ์์.
'web > react hook' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
useId (0) | 2024.12.14 |
---|---|
useEffect (1) | 2024.12.14 |
useDebugValue (0) | 2024.12.14 |
useContext (0) | 2024.12.14 |
useCallback (0) | 2024.12.14 |
- Total
- Today
- Yesterday
- ๋ฐ์ดํฐ์ ์ง
- react dom
- useid
- dns-prefetch
- useformstatus
- ์ํ๊ด๋ฆฌ
- component
- react dom hook
- ์ธ๋ถํฐํธ
- Nextjs
- useinsertioneffect
- react hook
- experimental
- experimental_taintobjectreference
- ์ต์ ๋ฐ์ดํฐ
- zustand
- flushsync
- ์คํ์
- finddomnode
- Store
- preconnect
- Props
- usedeferredvalue
- prefetchdns
- ๋ฒ ํ
- state
- experimental_taintuniquevalue
- ์ ์ฅ์
- useRef
- react
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |