Vuejs2 从vuejs组件中创建的钩子调用方法

Vuejs2 从vuejs组件中创建的钩子调用方法,vuejs2,vue-component,Vuejs2,Vue Component,我有一个具有以下(部分)代码的组件: 我得到了以下错误: vue.esm.js?efeb:578 [Vue warn]: Error in created hook: "TypeError: Cannot read property 'mymethod' of undefined" 似乎“this”没有被计算到组件的vue实例。 在定义Vue方法、生命周期方法、计算属性时,会出现什么情况。。。最好不要使用箭头函数,因为这样做会覆盖Vue本身推送的this。试试这个: export defaul

我有一个具有以下(部分)代码的组件:

我得到了以下错误:

vue.esm.js?efeb:578 [Vue warn]: Error in created hook: "TypeError: Cannot read property 'mymethod' of undefined"
似乎“this”没有被计算到组件的vue实例。
在定义Vue方法、生命周期方法、计算属性时,

会出现什么情况。。。最好不要使用箭头函数,因为这样做会覆盖Vue本身推送的
this
。试试这个:

export default {
  methods: {
    mymethod (x) { alert(x) },
  },
  created () {
    this.mymethod('success');
  },
  ...
}

您已经在创建的钩子中使用了箭头函数。试用

created: function {
   this.mymethod('success');
},
如果您查看文档,其中也明确说明

不要在选项属性或回调上使用箭头函数,例如 创建:()=>console.log(this.a)或vm.$watch('a',newValue=> 这是.myMethod())。因为箭头函数绑定到父函数 在上下文中,这通常不是您所期望的Vue实例 导致错误,例如未捕获的TypeError:无法读取属性 未定义或未捕获的类型错误:this.myMethod不是函数


首先将钩子方法更改为:

methods: {
  mymethod(x){alert(x);}
}
然后,还要更改所创建的钩子函数中被调用的方法。它一定是这样的:

created(){
  this.mymethod('success');
}
那你就完了

created(){
  this.mymethod('success');
}