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

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

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

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

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

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

//****將這段內(nèi)容放在tool.js文件中****
// 重寫(xiě)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)聽(tīng)localstorage中數(shù)據(jù)變化的文件中加以下代碼

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

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

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

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

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

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

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

// localhost:8080/pageOne 頁(yè)面
localStorage.setItem('calling', '55894')
// localhost:8080/pageTwo 頁(yè)面
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 中值的頁(yè)面的URL地址,即該值在哪個(gè)頁(yè)面被寫(xiě)入/被修改的;

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

其余屬性截圖如下

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

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

相關(guān)文章

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

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

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

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

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

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

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

    如何使用vue開(kāi)發(fā)公眾號(hào)網(wǎng)頁(yè)

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

    vue中的適配px2rem示例代碼

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

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

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

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

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

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

    這篇文章主要介紹了vue組件props屬性監(jiān)聽(tīng)不到值變化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(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。針對(duì)這個(gè)需求,小編整理了三種實(shí)現(xiàn)方式,如果大家對(duì)vue 點(diǎn)擊空白隱藏節(jié)點(diǎn)問(wèn)題感興趣的朋友跟隨小編一起看看吧
    2019-10-10

最新評(píng)論