首页 >web前端 >js教程 >为什么 Vue.js 生命周期挂钩和计算属性中的'this”变得未定义?

为什么 Vue.js 生命周期挂钩和计算属性中的'this”变得未定义?

DDD
DDD原创
2024-11-28 04:58:10814浏览

Why Does

VueJS: "this" 在生命周期钩子和计算属性中未定义

在 Vue.js 中,你可能会遇到访问 "this" 的情况” 生命周期挂钩或计算属性中的关键字返回“未定义”。使用箭头函数时会发生这种情况。

原因:

箭头函数 () =>; {} 将“this”关键字绑定到 Vue 实例外部的上下文。这意味着箭头函数中的“this”指的是父作用域,而不是 Vue 实例本身。

示例 1:

mounted: () => {
  console.log(this); // logs "undefined"
}

在此示例中,用于“mounted”钩子的箭头函数不会将“this”绑定到Vue

示例 2:

computed: {
  foo: () => { 
    return this.bar + 1; 
  }
}

这里,计算属性使用箭头函数,这会导致对“this.bar”的引用求值为 undefined ,导致错误“无法读取属性‘bar’

解决方案:

要解决此问题并访问对“this”的正确引用,请使用常规函数或 ES5 简写:

常规函数:

mounted: function () {
  console.log(this);
}

ES5简写:

mounted() {
  console.log(this);
}

通过使用这些方法,您可以确保“this”在生命周期内引用Vue实例钩子和计算属性。

以上是为什么 Vue.js 生命周期挂钩和计算属性中的'this”变得未定义?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn