我使用lodash调用组件上的go 盎司函数,如下所示:

...
import _ from 'lodash';

export default {
    store,
    data: () => {
        return {
            foo: "",
        }
    },

    watch: {
        searchStr: _.debounce(this.default.methods.checkSearchStr(str), 100)
    },

    methods: {
        checkSearchStr(string) {
            console.log(this.foo) // <-- ISSUE 1
            console.log(this.$store.dispatch('someMethod',string) // <-- ISSUE 2
        }
    }
}
  • 问题1是我的方法checkSearchStr不知道foo
  • 第二个问题是我的store 也有undefined

为什么我的方法在通过_.debounce调用时不知道this?正确的用法是什么?

推荐答案

你的手表应该是这样的.

watch: {
    searchStr: _.debounce(function(newVal){
      this.checkSearchStr(newVal)
    }, 100)
},

然而,这有点不同寻常.我不明白你为什么要把手表拆了.也许你更愿意用"checkSearchStr"方法来减轻压力.

watch: {
    searchStr(newVal){
      this.checkSearchStr(newVal)
    }
},

methods: {
    checkSearchStr: _.debounce(function(string) {
        console.log(this.foo) 
        console.log(this.$store.dispatch('someMethod',string)) 
    }, 100)
}

还有一件事我想指出;代码中没有定义searchStr.使用Vue查看值时,您正在查看数据或计算(computed)属性.正如您目前所定义的,searchStr上的手表永远不会执行.

Vue.js相关问答推荐

VUE:带自定义组件的数组输入绑定

使用内部方法创建计算(computed)属性是否合法?

vue3 输入标签给出错误 Vue.use 不是函数

在 v-for 中定义变量有什么问题吗?

超出最大调用堆栈大小 - Vue路由

在 vue.js 中添加新类时样式不适用

Vue-tables-2(vuex)react性不起作用

如何在 vue 组件中定义变量? (Vue.JS 2)

使用 v-slot:body 时 Vuetify v-data-table 没有响应

VueJS 组件中的图像未加载

我可以使用 vue.js v-if 来判断值是否存在于数组中

在Vue.js中从父组件执行子方法

我可以修改 Vue.js VNodes 吗?

Vue-i18n '无法读取 Proxy.Vue.$t 处未定义的属性 '_t'

如何从 vue.js 捕获 Jquery 事件

在 VUE JS 的光标位置插入字符

使用 Vue.js & DataTable(jquery 插件)

Vue在按钮单击时添加一个组件

使用 vuejs 设置响应式屏幕宽度

Vue js在列表中添加动态字段,删除和排序不起作用