节气门

时间:2020-04-20 04:39:43

标签: react-redux lodash store throttling debounce

我有一个事件侦听器,它调度一个动作。

window.addEventListener('resize', () => {
    store.dispatch(screenResize());
})

我正试图用lodash抑制(或消除反弹)

问题是,我应该怎么做

const throttledScreenResize =  _.throttle(screenResize(), 250)

window.addEventListener('resize', () => {
    store.dispatch(throttledScreenResize);
})

const throttledScreenResize =  _.throttle(() => store.dispatch(screenResize()), 250)

window.addEventListener('resize', throttledScreenResize)

还是都不是?那怎么了?

谢谢

1 个答案:

答案 0 :(得分:1)

采取第二种方法

store.dispatch(..)内调用_throttle。这样可以确保store.dispatch每250毫秒执行一次以上

const throttledScreenResize =  _.throttle(() => store.dispatch(screenResize()), 250)

window.addEventListener('resize', throttledScreenResize)

在第一种方法中:在每个store.dispatch事件中调用resize