react에 throttle를
적용한 코드입니다.
throttle
동일한 이벤트가 반복적으로 시행되는 경우 이벤트의 실제 반복 주기와 상관없이 임의로 설정한 일정 시간 간격으로 콜백 함수의 실행을 보장합니다. 즉 일정시간동안 1개의 콜백함수를 실행하게 하여 짧은시간 동안 불필요하게 동일한 함수 실행을 막습니다.
화면 구현
throttle 코드
- 제로초님의 블로그를 참조한 코드
- rottle: 동일 이벤트가 반복적으로 시행되는 경우 이벤트의 실제 반복 주기와 상관없이 임의로 설정한 일정 시간 간격(밀리세컨드)으로 콜백 함수의 실행을 보장합니다.
function throttle(fetchData, delay = 600) { //throttle 사용코드
let timer;
return function () {
if (!timer) {
timer = setTimeout(() => {
timer = null;
fetchData.apply(this, arguments)
}, delay)
}
}
}
throttle의 다른 코드
처음에 사용한 코드였으나 작동이 되었다 안되었다 하여 최종적으로 상단의 코드를 사용하였습니다.
function throttle(fetchData, limit = 2000) {
let waiting = false
return function () {
if (!waiting) {
fetchData.apply(this, arguments)
waiting = true
setTimeout(() => { waiting = false }, limit)
}
}
}
적용 코드
const fetchData = (day) => {
if (조건) {
toast(<p>해당 일의 데이터가 없습니다</p>, toastCommonProps('bottom-center', 'toast_alert'))
} else {
데이터 불러오기
}
}
function throttle(fetchData, delay = 600) { //throttle 사용코드
let timer;
return function () {
if (!timer) {
timer = setTimeout(() => {
timer = null;
fetchData.apply(this, arguments)
}, delay)
}
}
}
//클릭 이벤트
<div onClick={throttle(() => fetchData(one.day))} >요소</div>
반응형
'개발 > React' 카테고리의 다른 글
[react] browser-image-compression 이미지 리사이징 적용 (0) | 2022.11.04 |
---|---|
[react] 검색어 자동완성 구현하기 (0) | 2022.10.06 |
[react] react-infinite-scroll-component 사용법 (ft. 무한 스크롤) (0) | 2022.09.30 |
[react] 여러개 토글 버튼 구현 (0) | 2022.09.20 |
[react] resize 적용하는 법 (0) | 2022.09.13 |
댓글