반응형
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
- gitsquash
- git squash
- git commit merge
- Git commit 합치기
- formik submitting not working
- 헤드퍼스트전략패턴
- awss3
- file not found Error
- 디자인패턴
- cypress React
- cypressBDD
- FirebaseAnalytics
- 시스템설계면접
- 가상면접으로대규모시스템
- 가상면접3장
- git commit 협업
- 리액트구글애널리틱스
- 시스템설계방법
- 시스템설계면접팁
- formik react-query submitting not working
- 시스템설계면접예시
- 리팩터링2판테스트
- 시스템설계
- s3이미지다운로드됨
- 테스트코드책
- 가상면접2장
- 리팩토링2판4장
- react-ga
- 전략패턴
- react
Archives
- Today
- Total
mingg IT
[React] lodash debounce 사용 본문
- Throttle vs Debounce
- Throttle
- 마지막 함수가 호출된 후 일정 시간이 지나기 전에 다시 호출되지 않도록 하는 기법.
- Debounce
- 연달아 호출되는 함수들 중 마지막 함수만 호출하도록 하는 기법.
- Throttle
사용 예시를 보겠다.
사용하지 않았을 경우
onChange가 발생할 때 마다 axios가 호출된다.
사용했을 경우
한번만 axios가 날라가게 된다.
const onDebounceApply = debounce((e: any) => {
onClickApply(e);
}, 1000);
//각 단어는 한개 입력받은 이후 500ms 후에 입력 받음
// 입력 후 1000ms 후에 검색 api 날라감
const onDebounceChange = debounce((e) => {
handleTextField(e);
setTimeout(() => {
onDebounceApply(e);
}, 500);
}, 500);
const handleTextField = (e: any) => {
dispatch(changeInput(e.target.value));
};
const onClickApply = useCallback(
async (e) => {
dispatch(getList(input));
},
[input, dispatch]
);
onChange한 이후에 apply가 발생해야 함으로 setTimeout을 사용해주었다.
네이버나 구글같이 검색 시 자동완성할때 주로 사용하겠다 싶네.
'FrontEnd' 카테고리의 다른 글
[Typescript] 주석 사용법 (0) | 2022.02.25 |
---|---|
[Typescript] 프로젝트 내 any 갯수 추적하기 (0) | 2022.02.24 |
[Typescript] 제너릭(generic) 타입 사용하기 (0) | 2022.02.22 |
React 프레임 워크 TOP3 (0) | 2022.02.21 |
[React] 코드 스플리팅 예시(class, 함수, loadable) (0) | 2022.02.01 |
Comments