React(Lodash)에서 Debounce를 사용하는 방법
9107 단어 webdevjavascriptbeginnersreact
input
필드에 입력하거나 특정 작업을 수행할 때 API에서 요청하는 효율적인 방법은 API와 상호 작용하기 전에 사용자 작업을 완료할 수 있도록 하는 것입니다. 이렇게 하면 UI 코드가 모든 이벤트를 처리할 필요가 없으며 서버로 전송되는 호출 수도 크게 줄어듭니다.이에 대한 해결책 중 하나는 디바운스/스로틀을 사용하는 것이며 Lodash는
debounce
기능을 제공합니다. Lodash의 디바운스 함수는 전달된 함수 호출을 지연시킵니다. 일부 상황에서는 성능에 도움이 될 수 있습니다.이 기사에서는 React 앱에서
debounce
의 올바른 구현을 살펴볼 것입니다.우리 앱
검색 입력 필드가 포함되어 있고 사용자가 요청을 입력할 때마다 데이터를 UI에 로드하는 요청이 이루어지는 이 샘플 React 애플리케이션을 살펴보겠습니다.
export default function App() {
const [users, setUsers] = React.useState([]);
async function search(value) {
const res = await fetch(
// Fake API
`https://api.github.com/?search=${value}`
);
const body = await res.json();
return body.results.map((result) => result.name);
}
async function handleChange(event) {
setUsers(await search(event.target.value));
}
return (
<div className="App">
<input
type="search"
placeholder="Enter your search"
onChange={handleChange}
/>
<ul>
{users.map((user) => (
<li key={user.id}>{user.firstname}</li>
))}
</ul>
</div>
);
}
위의 코드를 사용하면 사용자가 입력 요소에서 키 입력을 할 때마다 검색 요청이 이루어집니다. 이상적으로는 사용자가 입력을 중지한 경우에만 검색 요청이 이루어지기를 원합니다. 이를 위해 Lodash의
debounce
함수를 사용할 수 있습니다. debounce
함수는 사용자가 미리 정해진 시간 동안 입력을 중지할 때까지 키업 이벤트 처리를 지연시킵니다.React에서 디바운스 구현하기
npm install lodash
debounce
함수를 만들고 handlechange
내부에서 호출하면 타이머가 각 호출 사이의 간격을 결정하는 디바운스된 함수로 설정됩니다.import { debounce } from 'lodash';
const handleSearchDebounce = debounce(async (value) => {
setUser(await search(value));
}, 300);
async function handleChange(event) {
handleSearchDebounce(event.target.value);
}
접근법 2
첫 번째 방법을 사용하면 모든 렌더링에서 디바운스된 방법의 새 버전이 생성됩니다. 대신
useRef
후크를 사용하여 렌더링 간에 디바운스된 함수를 저장할 수 있습니다.import { debounce } from 'lodash';
const handleSearchDebounce = React.useRef(
debounce(async (value) => {
setUsers(await search(value));
}, 300)
).current;
/* We can use the `useEffect` hook to cancel the debounced function
so whenever the component unmounts the search stops running, and
the function gets canceled */
React.useEffect(() => {
return () => {
handleSearchDebounce.cancel();
};
}, [handleSearchDebounce]);
결론
이 기사에서는 Lodash를 사용하여 React에서
debounce
함수를 구현하는 방법을 설명했습니다. 그러나 원하지 않는 경우 프로젝트에서 Lodash의 구현debounce
을 사용할 필요가 없습니다. write your own 디바운스 기능을 결정할 수 있으며 일부 다른 라이브러리는 이와 동일한 디바운스 기능을 제공합니다.👉🏾 Learn more about me
👉🏾
👉🏾 Subscribe to my blog, let's feast
Reference
이 문제에 관하여(React(Lodash)에서 Debounce를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jideabdqudus/how-to-use-debounce-in-react-lodash-44dh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)