vue watch監(jiān)聽取不到this指向的數(shù)問題
vue watch監(jiān)聽取不到this指向的數(shù)
同事問我,watch里this指向的數(shù)值,別的地方卻可以打印出來。工具也能看到數(shù)值,但打印出來卻是undifined,先看看代碼:

懶得打字了直接上截圖吧

ps:
在Vue組件中,如果你在watch選項中訪問this指向的數(shù)據(jù),有可能無法獲取到數(shù)據(jù),因為this的指向在箭頭函數(shù)中不會指向Vue實例。
解決方法
使用常規(guī)函數(shù)而不是箭頭函數(shù)來定義watch中的回調(diào)。
javascriptwatch: {
apiData: function(newVal, oldVal) {
// 在這里,this指向Vue實例,可以訪問this.apiData
}
}如果你使用箭頭函數(shù),并且需要訪問Vue實例的方法或數(shù)據(jù),可以在data中定義一個變量來存儲this的引用。
javascriptdata() {
return {
vm: this // 存儲Vue實例的引用
};
},
watch: {
apiData: (newVal, oldVal) => {
// 使用 this.vm 來訪問Vue實例的數(shù)據(jù)和方法
}
}使用watch的第三個參數(shù)immediate,設(shè)置為true可以讓watch立即觸發(fā)。
javascriptwatch: {
apiData: {
handler: (newVal, oldVal) => {
// 處理數(shù)據(jù)變化
},
immediate: true // 組件創(chuàng)建后立即觸發(fā)一次
}
}確保你的watch監(jiān)聽的數(shù)據(jù)在組件創(chuàng)建之前已經(jīng)被定義,否則可能無法觸發(fā)watch。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue如何實現(xiàn)多組關(guān)鍵詞對應(yīng)高亮顯示
這篇文章主要介紹了vue如何實現(xiàn)多組關(guān)鍵詞對應(yīng)高亮顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
vue-quill-editor 自定義工具欄和自定義圖片上傳路徑操作
這篇文章主要介紹了vue-quill-editor 自定義工具欄和自定義圖片上傳路徑操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
vue EventSource使用及配置請求頭、webpack代理配置教程
EventSourcePolyfill是EventSource封裝的一個方法,可以配置請求頭,安裝依賴后,不需要加請求頭時直接使用,需要加請求頭時可以自定義請求頭,基于webpack的vue項目,需要配置代理以解決跨域問題,設(shè)置devServer的compress屬性為false以實時收到EventSource的消息2025-12-12
vue3.0?router路由跳轉(zhuǎn)傳參問題(router.push)
這篇文章主要介紹了vue3.0?router路由跳轉(zhuǎn)傳參問題(router.push),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Vue2中pinia刷新后數(shù)據(jù)丟失的問題解決
Pinia是一個Vue.js狀態(tài)管理庫,如果你在組件中修改了store中的數(shù)據(jù)并刷新了界面,Pinia會將store中的數(shù)據(jù)重置為初始值,從而導(dǎo)致數(shù)據(jù)丟失的問題,本文就來介紹一下問題解決,感興趣的可以了解一下2023-12-12

