javascript - 删除去抖回调

标签 javascript reactjs

我在 React 商店中有以下代码:

  addChangeListener(cb) {
    this.on(CHANGE_EVENT, _.debounce(cb, 100));
  }

  removeChangeListener(cb) {
    _.debounce(cb).cancel();
    this.removeListener(CHANGE_EVENT, cb);
  }

我不认为 removeChangeListener 会因为 _.debounce 函数而删除 cb。如何使用 _.debounce,并确保删除正确的 cb

最佳答案

你是对的。 _.debounce 创建一个新函数。所以你需要做类似的事情:

var debouncedCb;

addChangeListener(cb) {
  debouncedCb = _.debounce(cb, 100)
  this.on(CHANGE_EVENT, debouncedCb);
}

removeChangeListener(cb) {
  this.removeListener(CHANGE_EVENT, debouncedCb);
  _.debounce(cb).cancel();
}

根据您的具体情况,您可能希望以某种方式将 debouncedCb 附加到 cb,这样 removeChangeListener 就不会得到困惑。

关于javascript - 删除去抖回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830222/

相关文章:

reactjs - 使用 ref 和 useEffect 监听 Formik 字段的变化

javascript - 使用base64数据在javascript中设置背景图像

javascript - 如何在单元测试运行中初始化全局变量?

javascript - 如何在redux React js中通过按钮点击传递数据

javascript - IDE 中 jsx 代码的流 'unexpected token <'

reactjs - react : get nested components

javascript - 在 useEffect 钩子(Hook)的 if 条件下调用异步函数

javascript - 在组件 [Angular] 中加载 Google Maps JS API

javascript - jQuery 动态内容的点击不起作用

javascript - IE 中未定义内联 onclick