Vue/Nuxt - mounted: () => Vs mounted: function()

Vue/ Nuxt - mounted: () => Vs mounted: function()

为什么在 mounted 中使用 () =>function() 结果不同:

export default {
  mounted: () => {
    this.socket = 'something'
    console.log('mounted')
  },
  methods: {
    submitMessage() {
      console.log(this.socket) // undefined
    }
  }
}

使用function()

export default {
  mounted: function() {
    this.socket = 'something'
    console.log('mounted')
  },
  methods: {
    submitMessage() {
      console.log(this.socket) // something
    }
  }
}

有什么想法吗?

您不应使用箭头函数来定义生命周期挂钩、方法、...(例如 mounted: () => this.socket++)。原因是箭头函数绑定了父上下文,所以这不会是您期望的 Vue 实例,并且 this.socket 将是未定义的。