亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

VueJS:為什么“這個”沒有定義?

VueJS:為什么“這個”沒有定義?

狐的傳說 2019-06-24 09:42:05
VueJS:為什么“這個”沒有定義?我正在創建一個組件vue.js.當我提到this在任何一個生命周期鉤 (created, mounted, updated等等)它評估為undefined:mounted: () => {   console.log(this); // logs "undefined"},同樣的事情也發生在我的計算屬性中:computed: {   foo: () => {      return this.bar + 1;    } }我得到以下錯誤:未定義類型錯誤:無法讀取未定義的屬性“bar”為什么this評估到undefined在這種情況下?
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

這兩個示例都使用了箭頭函數 () => { },結合在一起this與Vue實例不同的上下文。

根據文獻資料:

不要對實例屬性或回調使用箭頭函數(例如,vm.$watch('a', newVal => this.myMethod()))。當箭頭函數綁定到父上下文時,this不會如您所期望的那樣成為Vue實例,this.myMethod將是未知的。

為了得到正確的引用this作為Vue實例,使用一個常規函數:

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

或者,您也可以使用ECMAScript 5速記就某項職能而言:

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


查看完整回答
反對 回復 2019-06-24
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

你在用箭頭函數.

這個VUE文檔明確聲明不對屬性或回調使用箭頭函數。

與常規函數不同,箭頭函數不綁定。this..相反,this在詞匯上是有約束的。this使它的意義遠離它原來的上下文)。

var instance = new  Vue({
    el:'#instance',
  data:{
    valueOfThis:null
  },
  created: ()=>{
    console.log(this)
  }});

這將在控制臺中記錄以下對象:

Window {postMessage: ?, blur: ?, focus: ?, close: ?, frames: Window, …}

但是.。如果我們使用一個常規函數(在Vue實例上應該使用這個函數)

var instance = new  Vue({
    el:'#instance',
  data:{
    valueOfThis:null
  },
  created: function(){
    console.log(this)
  }});

在控制臺中記錄以下對象:

hn {_uid: 0, _isVue: true, $options: {…}, _renderProxy: hn, _self: hn, …}


查看完整回答
反對 回復 2019-06-24
  • 2 回答
  • 0 關注
  • 964 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號