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項目中vue-echarts講解及常用圖表實現(xiàn)方案(推薦)
這篇文章主要介紹了vue項目中vue-echarts講解及常用圖表方案實現(xiàn),主要針對代碼示例中的內(nèi)容進行問題講解,詳細代碼在文章中給大家提到,需要的朋友可以參考下2022-09-09Vue3?Suspense實現(xiàn)優(yōu)雅處理異步數(shù)據(jù)加載
Suspense?是?Vue?3?中用于處理異步數(shù)據(jù)加載的特性,它使得在加載異步數(shù)據(jù)時可以提供更好的用戶體驗,下面小編就來和大家詳細講講Suspense如何優(yōu)雅處理異步數(shù)據(jù)加載吧2023-10-10Vue一個動態(tài)添加background-image的實現(xiàn)
這篇文章主要介紹了Vue一個動態(tài)添加background-image的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03