개발일지
디바운싱(Debouncing)으로 과도한 이벤트 발생 방지하기 본문
🥹 문제 발생
wheel 이벤트를 적용하는 과정에서 스크롤을 하면 튕기면서 두 페이지씩 내려가는 문제가 발생하였다 ..
🤔 문제 원인
스크롤 이벤트가 과도하게 발생하면서 한 번의 스크롤 동작에도 여러 번 트리거 되어 튕기며 두 페이지씩 넘어가는 현상이 생기는 것이었다.
👍🏻 해결 방법
디바운싱을 적용해 주어 지정된 시간 동안 이벤트가 한 번만 실행되도록 제한을 해주었다.
1. 먼저 useRef를 이용해 스크롤의 상태를 추척해준다.
const isScrolling = useRef(false);
2. 스크롤 이벤트 함수에 true로 변경하여 스크롤 중 상태로 설정해 준다.
isScrolling.current = true;
3. setTimeout을 이용해 일정 시간 후 스크롤 가능 상태로 변경해 준다.
setTimeout(() => {
isScrolling.current = false;
}, 1200);
};
디바운싱을 적용하게 되면서 스크롤 이벤트가 잦게 발생하는 문제를 해결하였고 이를 통해 scrollTop 위치를 자주 수정하면서 발생하던 불필요한 렌더링도 줄일 수 있었습니다!
해결 완료 😚
'[트러블슈팅] 오이 프로젝트!' 카테고리의 다른 글
| JSX 구성 요소로 사용할 수 없습니다. 오류 발생 (0) | 2024.11.29 |
|---|---|
| 랜딩페이지 wheel이벤트 적용 후 top버튼 작동시키기 (1) | 2024.11.27 |
| 반응형 사이트 wheel 이벤트 적용시 헤더 높이 빼는 방법 (0) | 2024.11.26 |
| 401 에러 예외처리하기! (1) | 2024.11.25 |
| 한글 입력할 때 keydown이벤트 중복 현상 (0) | 2024.11.25 |