开发者问题收集

Vue 和 lodash debounce 有什么问题?

2017-10-31
1231

道具:

props: {
  delay: Number,
}

观察者:

 watch: {
   q: _.debounce(function() {
     console.log(this.delay);      // 500; always works fine, this.delay is here
   }, this.delay)                  // never works; 
 },

如果硬编码延迟(设置 500 而不是 this.delay - 它会起作用;否则 - 函数不会去抖动)。

我做错了什么?谢谢。

1个回答

您将无法在那里完成 delay 的设置。 this 不是该范围内的组件。您可以在生命周期钩子内改用 $watch

created () {
  this.debounceUnwatch = this.$watch('q', _.debounce(
    this.someMethod,
    this.delay
  ))
},

destroyed () {
  // Removed the watcher.
  this.debounceUnwatch()
},

有关更多信息: https://v2.vuejs.org/v2/api/#vm-watch

编辑

这也不起作用。它真的看起来应该有。我认为这里需要做的是,您需要对更新 q 的内容进行反跳,而不是 q 本身。

Bill Criswell
2017-10-31