我有一个包含以下(部分)代码的组件:
export default {
methods: {
mymethod: (x) => {alert(x)},
},
created: () => {
this.mymethod('success');
},
我收到以下错误:
vue.esm.js?efeb:578 [Vue warn]: Error in created hook: "TypeError: Cannot read property 'mymethod' of undefined"
看起来好像是"这个"没有被评估到组件的vue实例。 还有什么想法呢?
答案 0 :(得分:7)
在定义Vue方法,生命周期方法,计算属性时,...最好不要使用箭头函数,因为这样就会覆盖Vue本身推送的this
。试试这个:
export default {
methods: {
mymethod (x) { alert(x) },
},
created () {
this.mymethod('success');
},
...
}
答案 1 :(得分:1)
您已在创建的挂钩中使用箭头功能。而是尝试使用
created: function {
this.mymethod('success');
},
如果您查看明确说明的vue.js文档
不要在选项属性或回调上使用箭头功能,例如created:()=&gt; console.log(this.a)或vm。$ watch('a',newValue =&gt; this.myMethod())。由于箭头函数绑定到父上下文,因此它不会像您期望的那样是Vue实例,通常会导致错误,例如Uncaught TypeError:无法读取未定义或未捕获TypeError的属性:this.myMethod不是函数。< / p>
答案 2 :(得分:1)
首先将你的钩子方法更改为:
methods: {
mymethod(x){alert(x);}
}
然后,还要更改创建的钩子函数内的被调用方法。它必须如下所示:
created(){
this.mymethod('success');
}
然后你就完成了!