首頁  >  文章  >  web前端  >  為什麼 Vue.js 箭頭函數中的「this」未定義?

為什麼 Vue.js 箭頭函數中的「this」未定義?

Linda Hamilton
Linda Hamilton原創
2024-11-15 22:14:03879瀏覽

Why is

VueJS:解決「this」未定義問題

箭頭函數可能是 VueJS 中的一個陷阱,導致意外的未定義值。這是因為箭頭函數繼承其父級的上下文,而不是綁定到 Vue 實例。

生命週期鉤子

在 Mounted 等生命週期鉤子中使用箭頭函數時, this 不是指 Vue 實例。相反,它指的是父上下文,通常是 HTML 元素或觸發掛載鉤子的 Vue 元件。

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

計算屬性

箭頭函數計算屬性中也會導致未定義的值。由於它們繼承了父上下文,因此 this 並未引用 Vue 實例。

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

這會導致錯誤「Uncaught TypeError: Cannot read property 'bar' of undefined」。

解決方案

要解決此問題,請使用常規函數或ECMAScript 5 函數簡寫而不是箭頭函數:

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

透過使用這些方法,您可以確保this 始終引用Vue 實例,在生命週期掛鉤和計算屬性中提供預期的行為。

以上是為什麼 Vue.js 箭頭函數中的「this」未定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn