代码之家  ›  专栏  ›  技术社区  ›  Seva

Vue和lodash debounce有什么问题?

  •  2
  • Seva  · 技术社区  · 7 年前

    道具:

    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 回复  |  直到 7 年前
        1
  •  2
  •   Bill Criswell    7 年前

    您将无法完成设置 delay this 不是该范围内的组件。您可以使用 $watch

    created () {
      this.debounceUnwatch = this.$watch('q', _.debounce(
        this.someMethod,
        this.delay
      ))
    },
    
    destroyed () {
      // Removed the watcher.
      this.debounceUnwatch()
    },
    

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

    编辑

    这也不行。看起来真的应该这样。我认为这里需要做的是,你需要消除正在更新的内容 q 而不是 q 它本身