18가지 반응 : useDeferredValue
References:
React docs: useDeferredValue
Discussions: useDeferredValue
뭐?
useDeferredValue
는 상태 업데이트와 같은 일부 작업에 의해 트리거되는 긴급하지 않은 업데이트를 연기하는 데 사용할 수 있는 새로운 반응 후크입니다.useDeferredValue
후크가 값을 수락하고 보다 긴급한 업데이트를 연기할 값의 새 복사본을 반환합니다. 긴급 업데이트 렌더링과 같이 반응이 바쁜 경우 반환 값은 이전 값이 되며 긴급 업데이트가 완료되면 후크에서 업데이트된 값을 가져옵니다.import { useState, useEffect, useDeferredValue } from "react";
function App({data}) {
const [query, setQuery] = useState("");
const [result, setResult] = useState(data);
// Showing result is non-urgent update
const deferredQuery = useDeferredValue(query);
useEffect(() => {
const searchResult = search(data, deferredQuery);
setResult(searchResult);
}, [deferredQuery]);
return (
<div className="App">
<label htmlFor="search users">Search: </label>
<input
type="search"
value={query}
onChange={(e) => setQuery(e.target.value)} // urgent update
/>
<DataView data={result}/>
</div>
);
}
여기에서 지연된 쿼리에 대해 검색이 수행되고 검색 결과가 긴급하지 않은 업데이트임을 보여줍니다. 그러나 사용자가 입력 필드에 입력한 내용을 보여주는 것은 긴급 업데이트입니다. 깊이 들어가자,
"장난감"이라는 검색어를 입력했다고 가정해 보겠습니다.
React 17 이전 버전에서는
React 18에서: useDeferredValue 사용,
이 훅은 useDebounce과 같은 디바운싱 훅과 유사하지만
useDeferredValue
를 사용하는 이점은 React가 다른 작업이 완료되는 즉시 업데이트에 대해 작업한다는 것입니다(임의의 시간을 기다리는 대신).따라서
useDeferredValue
후크를 사용하는 경우 고급형 컴퓨터는 업데이트를 빠르게 처리할 수 있으므로 고급형 컴퓨터에서는 긴급하지 않은 업데이트가 보급형 컴퓨터보다 빠릅니다. 그러나 useDebounce
의 경우 긴급하지 않은 업데이트에 대한 지연은 두 경우 모두 동일하므로 사용 가능한 전체 리소스를 활용할 수 없습니다.왜요?
UI 업데이트를 더 잘 제어할 수 있으므로 어떤 업데이트가 긴급하고 어떤 것이 긴급하지 않은지를 반응에 알릴 수 있는 옵션이 있으면 더 나은 사용자 경험을 만들 수 있습니다.
사용하는 방법?
Upgrade to react 18 ,
useDeferredValue
후크를 사용합니다.예시:
useDeferredValue
: https://codesandbox.io/s/react-18-usedeferredvalue-s4lgn2없이
useDeferredValue
: https://codesandbox.io/s/react-18-no-usedeferredvalue-wvel7c차이점을 확인하려면 CPU 스로틀링을 활성화하십시오.
Reference
이 문제에 관하여(18가지 반응 : useDeferredValue), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aldrin/react-18-things-usedeferredvalue-35oj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)