Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Dreamhack
- 개발
- 고고학 최고의 발견
- React
- expo
- 드림핵
- 새로고침
- API 활용 신청
- 공공데이터 포털
- redux state값 유지
- 오블완
- 꿀팁 환영
- level3
- url 랜더링
- 창업 300
- Redux
- 사업계획서
- 보안
- react-router-dom
- 티스토리챌린지
- 훈수 가능
- 코딩테스트
- 블로그 뉴비
- web-view
- python
- 부산 맛집 OPEN API
- apk 빌드
- 프로그래머스
- php-1
Archives
- Today
- Total
1223v
[React] 검색 디바운싱(Debouncing) 적용 본문
디바운싱(debouncing)을 적용하여 불필요한 상태 변경과 렌더링을 줄이고, 필요한 경우 커스텀 훅(custom hook)을 사용하는 방법이 포함됩니다.
기존 방식
// SearchBar.js
function SearchBar({ onChange }) {
return (
<input
type="text"
placeholder="강의 검색..."
onChange={(e) => onChange(e.target.value)}
/>
);
}
디바운싱(Debouncing) 적용
사용자가 입력할 때마다 즉시 상태를 업데이트하는 대신, 디바운싱을 적용하여 연속적인 입력에 대한 상태 업데이트를 지연시킬 수 있습니다. 이 방법은 연속적인 입력에서 발생하는 불필요한 렌더링을 줄여 성능을 향상시킵니다.
import { useState, useEffect } from "react";
function useDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
}, [value, delay]);
return debouncedValue;
}
function SearchBar({ onChange }) {
const [inputValue, setInputValue] = useState("");
const debouncedSearchTerm = useDebounce(inputValue, 500); // 500ms 지연
useEffect(() => {
onChange(debouncedSearchTerm);
}, [debouncedSearchTerm, onChange]);
return (
<input
type="text"
placeholder="강의 검색..."
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
);
}
이 코드에서 useDebounce 커스텀 훅은 지정된 지연 시간 후에만 입력값을 onChange에 전달합니다. 사용자가 타이핑을 멈추고 지정된 시간이 지나면 입력값이 업데이트됩니다.
728x90
'개발' 카테고리의 다른 글
신입 프론트 개발자라면 알아야할 키워드 (0) | 2024.12.04 |
---|---|
이화여대 외주 이미지 (0) | 2023.02.13 |
[React]공공데이터 포털 API 신청(+적용 2022.11.11) (1) | 2022.11.11 |
[React]redux 새로고침을 해도 값 유지시키기(state 값 유지시키기) (2) | 2022.10.14 |
구름 ide expo Web-View 과정 (0) | 2022.10.14 |