我有一个滚动事件的事件监听器,它触发一个负责将元素附加到视口的函数。同样的滚动事件监听器被限制以防止滚动事件的倾盆大雨(更易于管理)。用于节流的库是throttle-debounce
。问题:限制handlePageScroll
会限制该方法中包含的所有内容(当然)。
代码:
componentDidMount() {
window.addEventListener('scroll', throttle(2000, this.handlePageScroll));
}
handlePageScroll = () => {
someFn() // logic for appending an element, does not need throttling
this.loadNextBatch(); // logic that actually needs to be throttled
};
我在handlePageScroll
内尝试限制但没有成功。有没有办法从事件监听器中激活两个函数?
提前谢谢。
答案 0 :(得分:1)
通过保持状态,这是一个解决方案:
componentDidMount() {
let throttled = false
window.addEventListener('scroll', () => {
if (!throttled) {
throttle(2000, () => {
this.loadNextBatch()
throttled = false
})()
throttled = true
}
someFn()
})
}