欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue實(shí)現(xiàn)監(jiān)聽localstorage值變化

 更新時(shí)間:2022年08月31日 09:21:37   作者:吳小恩  
這篇文章主要介紹了vue實(shí)現(xiàn)監(jiān)聽localstorage值變化,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue監(jiān)聽localstorage值變化

在vue中實(shí)現(xiàn)監(jiān)聽localstorage中某個(gè)鍵對應(yīng)的值的變化

在根目錄下創(chuàng)建一個(gè)名為utils的文件夾,在文件夾中創(chuàng)建一個(gè)tool.js文件

//****將這段內(nèi)容放在tool.js文件中****
// 重寫setItem事件,當(dāng)使用setItem的時(shí)候,觸發(fā),window.dispatchEvent派發(fā)事件
function dispatchEventStroage() {
? ? const signSetItem = localStorage.setItem
? ? localStorage.setItem = function(key, val) {
? ? ? ? let setEvent = new Event('setItemEvent')
? ? ? ? setEvent.key = key
? ? ? ? setEvent.newValue = val
? ? ? ? window.dispatchEvent(setEvent)
? ? ? ? signSetItem.apply(this, arguments)
? ? }
}

export default dispatchEventStroage;

在main.js中引入使用

import tool from "./utils/tool";

Vue.use(tool);

在需要監(jiān)聽localstorage中數(shù)據(jù)變化的文件中加以下代碼

//解決this指向問題,在window.addEventListener中this是指向window的。
//需要將vue實(shí)例賦值給_this,這樣在window.addEventListener中通過_this可以為vue實(shí)例上data中的變量賦值
let _this=this;
//根據(jù)自己需要來監(jiān)聽對應(yīng)的key
window.addEventListener("setItemEvent",function(e){
?? ?//e.key : 是值發(fā)生變化的key
?? ?//例如 e.key==="token";
?? ?//e.newValue : 是可以對應(yīng)的新值
?? ?if(e.key==="token"){
?? ??? ?console.log(e.newValue);
?? ??? ?_this.token=e.newValue;
?? ?}
})

到這里就可以在localstorage中token的值變化時(shí)在控制臺輸出新的值了 , 此方法只能監(jiān)聽到setItem事件.

監(jiān)聽localStorage中值的變化實(shí)現(xiàn)跨頁面通信

分享一個(gè)之前困擾很久的,跨頁面之間的通信方式。

以前跨頁面通信,就拿我們之前vue項(xiàng)目中多頁面為例,每個(gè)頁面都是一個(gè)獨(dú)立的vue實(shí)例,通過main.js初始化,各個(gè)頁面之間的數(shù)據(jù)不互通,而通信方式最常見的方式是往緩存中存儲值,其他需要得到這個(gè)值的頁面通過定時(shí)器去實(shí)時(shí)查詢緩存中該值的變化,然后進(jìn)行通信。

但是定時(shí)器終究不是一個(gè)好的實(shí)現(xiàn)方式,而定時(shí)器的時(shí)間長短設(shè)置多少都很有考究,時(shí)間太短太耗性能,時(shí)間太長的話,又會存在一段時(shí)間拿不到最新值的情況。

現(xiàn)在有一個(gè)很方便的方式,那就是 監(jiān)聽,其他頁面正常像以前一樣往 storage 存儲值,如:localStorage.setItem(‘calling’, ‘55894’),然后需要獲取該值的頁面可以通過監(jiān)聽storage,就直接拿到變化后的值,示例如下:

// localhost:8080/pageOne 頁面
localStorage.setItem('calling', '55894')
// localhost:8080/pageTwo 頁面
window.addEventListener('storage', event => {
	if(event.key === 'calling') {
		services.call(event.newValue)
	}
})

部分屬性介紹如下

  • event.key:屬性值為在 sessionStorage 或 localStorage 中被修改/新添加的數(shù)據(jù)鍵值;
  • event.oldValue:屬性值為在 sessionStorage 或 localStorage 中被修改前的值;
  • event.newValue:屬性值為在 sessionStorage 或 localStorage 中被修改后的值;
  • event.url:屬性值為修改 sessionStorage 或 localStorage 中值的頁面的URL地址,即該值在哪個(gè)頁面被寫入/被修改的;

tips:只能監(jiān)聽 sessionStorage 或 localStorage 中值的變化,不能監(jiān)聽cookie中值的變化。

其余屬性截圖如下

好了,以上就是跨頁面之間通信的一種方式。

這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • vue組件編寫之todolist組件實(shí)例詳解

    vue組件編寫之todolist組件實(shí)例詳解

    這篇文章主要介紹了vue組件編寫之todolist組件的實(shí)例講解,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-01-01
  • Vue router動(dòng)態(tài)路由實(shí)現(xiàn)過程

    Vue router動(dòng)態(tài)路由實(shí)現(xiàn)過程

    Vue動(dòng)態(tài)路由(約定路由),聽起來好像很玄乎的樣子,但是你要是理解了實(shí)現(xiàn)思路,你會發(fā)現(xiàn)沒有想象中的那么難,下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)動(dòng)態(tài)路由添加功能的簡單方法,需要的朋友可以參考下
    2023-03-03
  • vue中swiper開啟loop后,點(diǎn)擊事件不響應(yīng)的解決方案

    vue中swiper開啟loop后,點(diǎn)擊事件不響應(yīng)的解決方案

    這篇文章主要介紹了vue中swiper開啟loop后,點(diǎn)擊事件不響應(yīng)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 如何使用vue開發(fā)公眾號網(wǎng)頁

    如何使用vue開發(fā)公眾號網(wǎng)頁

    因?yàn)轫?xiàng)目需要,近期做了一個(gè)公眾號網(wǎng)頁開發(fā)。在此期間也踩了一些坑,解決這些坑之后,準(zhǔn)備對這個(gè)項(xiàng)目進(jìn)行復(fù)盤。記錄下項(xiàng)目從開發(fā)到上線所解決的問題,并對使用vue進(jìn)行公眾號開發(fā)的步驟進(jìn)行一個(gè)總結(jié)。方便以后有問題進(jìn)行查閱。希望對你有所幫助
    2021-05-05
  • vue中的適配px2rem示例代碼

    vue中的適配px2rem示例代碼

    這篇文章主要給大家介紹了關(guān)于vue中適配px2rem的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • vue3項(xiàng)目如何國際化實(shí)戰(zhàn)指南

    vue3項(xiàng)目如何國際化實(shí)戰(zhàn)指南

    像很多大型的網(wǎng)址,特別是跨國際等公司網(wǎng)頁,訪問來自世界各地用戶,所以網(wǎng)頁的國際化極其重要的需求,下面這篇文章主要給大家介紹了關(guān)于vue3項(xiàng)目如何國際化的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • vue?parseHTML?函數(shù)拿到返回值后的處理源碼解析

    vue?parseHTML?函數(shù)拿到返回值后的處理源碼解析

    這篇文章主要為大家介紹了vue?parseHTML?函數(shù)拿到返回值后的處理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue組件props屬性監(jiān)聽不到值變化問題

    vue組件props屬性監(jiān)聽不到值變化問題

    這篇文章主要介紹了vue組件props屬性監(jiān)聽不到值變化問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue使用mixin分發(fā)組件的可復(fù)用功能

    Vue使用mixin分發(fā)組件的可復(fù)用功能

    這篇文章主要介紹了Vue使用mixin分發(fā)組件的可復(fù)用功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Vue 實(shí)現(xiàn)點(diǎn)擊空白處隱藏某節(jié)點(diǎn)的三種方式(指令、普通、遮罩)

    Vue 實(shí)現(xiàn)點(diǎn)擊空白處隱藏某節(jié)點(diǎn)的三種方式(指令、普通、遮罩)

    最近小編接到這樣的需求:彈出框(或Popover)在 show 后,點(diǎn)擊空白處可以將其 hide。針對這個(gè)需求,小編整理了三種實(shí)現(xiàn)方式,如果大家對vue 點(diǎn)擊空白隱藏節(jié)點(diǎn)問題感興趣的朋友跟隨小編一起看看吧
    2019-10-10

最新評論