vue實(shí)現(xiàn)監(jiān)聽(tīng)數(shù)值的變化,并捕捉到
上傳頭像的例子是完整的,登錄沒(méi)全部展示
1. 封裝全局監(jiān)聽(tīng)方法
在main.js中給引入watchsessionStorage(可以放多個(gè)函數(shù))。
約定監(jiān)聽(tīng)的sessionStorage的值為"dialogLogin",“avatarUrl”,然后創(chuàng)建StorageEvent方法,當(dāng)執(zhí)行sessionStorage.setItem(k, val) 時(shí),初始化事件,并派發(fā)事件
//用于登錄判斷是否有token
export function resetSetItem(key, newVal) {
if (key === 'dialogLogin') {
// 創(chuàng)建一個(gè)StorageEvent事件
var newStorageEvent = document.createEvent('StorageEvent');
const storage = {
setItem: function (k, val) {
sessionStorage.setItem(k, val);
// 初始化創(chuàng)建的事件
newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
// 派發(fā)對(duì)象
window.dispatchEvent(newStorageEvent)
}
}
return storage.setItem(key, newVal);
}
}
//用于上傳頭像事,頭部實(shí)時(shí)改變
export function resetSetItemAvatar(key, newVal) {
if (key === 'avatarUrl') {
// 創(chuàng)建一個(gè)StorageEvent事件
var newStorageEvent = document.createEvent('StorageEvent');
const storage = {
setItem: function (k, val) {
sessionStorage.setItem(k, val);
// 初始化創(chuàng)建的事件
newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
// 派發(fā)對(duì)象
window.dispatchEvent(newStorageEvent)
}
}
return storage.setItem(key, newVal);
}
}2. 觸發(fā),并將監(jiān)聽(tīng)的值存入Storage
例如在某個(gè)路由中需要將某個(gè)值作為監(jiān)聽(tīng)的值,則在該路由下的調(diào)用該方法。
resetSetItemAvatar('avatarUrl',res.data.avatar);
//res.data.avatar就是你要存入的值(例子:avatar頭像)3. 監(jiān)聽(tīng)
如果在另一個(gè)路由下需要根據(jù)watchStorage的值變化來(lái)刷新請(qǐng)求的頁(yè)面數(shù)據(jù)時(shí),可以在這個(gè)路由下的created鉤子函數(shù)中監(jiān)聽(tīng)。
window.addEventListener('setItem', ()=> {
//這里就可以根據(jù)具體情況調(diào)用或刷新需要的操作
this.avatar = sessionStorage.getItem("avatarUrl");; //獲取監(jiān)聽(tīng)的值
})完整例子(代碼看上面 ??)
第一步
在utils文件夾新建一個(gè)js

第二步
在main.js引入(用于登錄部分,可看可不看)

第二步
在上傳頭像的vue頁(yè)面引入(用于存儲(chǔ)頭像,主要例子)

第三步
在header.vue使用(只要上傳頭像,這里就會(huì)捕捉到,刷新頭像)


效果圖

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue服務(wù)端渲染操作簡(jiǎn)單入門(mén)實(shí)例分析
這篇文章主要介紹了vue服務(wù)端渲染操作,結(jié)合簡(jiǎn)單實(shí)例形式分析了vue.js服務(wù)端渲染操作的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-08-08
webstorm提示?@路徑?Module?is?not?installed的問(wèn)題
這篇文章主要介紹了webstorm提示?@路徑?Module?is?not?installed的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Vue項(xiàng)目添加前綴,ngnix發(fā)布相關(guān)修改問(wèn)題
這篇文章主要介紹了Vue項(xiàng)目添加前綴,ngnix發(fā)布相關(guān)修改問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
vue設(shè)置必填項(xiàng)和判斷必填項(xiàng)是否填入的彈窗提示
表格判斷在很多項(xiàng)目中都用得到,本文主要介紹了vue設(shè)置必填項(xiàng)和判斷必填項(xiàng)是否填入的彈窗提示,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11
vue3.0+vant3.0快速搭建項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了vue3.0+vant3.0快速搭建項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

