【发布时间】:2018-02-05 02:59:18
【问题描述】:
我有一个使用多个子组件的 Vue 组件。在这些子组件上,我有一个观察者来观察数据变化并处理这些变化。我想为此实现去抖动。
watch: {
data: {
handler: function () {
this.processData()
},
deep: true
}
},
methods: {
processData: debounce(function () {
console.log(this.id)
}, 250),
问题在于 debounce 有效,因此它只在最后一个子组件上执行。
我找到了一个接受额外 id debounceWithId 的 debounce 函数的解决方案
但是有一个问题是,如果我指定这个函数如下:
methods: {
processData: debounceWithId(function () {
console.log(this.id)
}, 250, this.id),
最后一个 this.id 是未定义的。
在多个组件中使用 debounce 以便函数在每个组件上单独触发的正确方法是什么?
【问题讨论】: