这里为什么不可以使用箭头函数

来源:2-1 搜索框组件

琥珀_2020

2020-04-12 20:41:19

watch: {
// 监听query,向外发送事件
// debounce节流函数,防止每输入一次就发送请求
// query: debounce(function () {
//   this.$emit('query', this.query);
// }),
query: debounce(() => {
this.$emit('query', this.query);
}),
},

 用箭头函数会报错 

http://img.mukewang.com/climg/5e930c6c0983dd5d23461212.jpg

这是为什么?


写回答

1回答

好帮手慕夭夭

2020-04-13

同学你好,这是因为this指向不同了。vue组件中使用普通函数时,this指向组件的实例。$emit是组件实例中的方法,所以可以通过this.$emit拿到。而箭头函数中的this是在函数创建时绑定的,它指向的是vue的配置对象(简单的理解就是组件的配置)。配置对象没有$emit方法,所以this.$emit拿不到就会报错。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 10739 问题

查看课程