最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript自定義localStorage監(jiān)聽事件的解決方法

 更新時間:2024年10月18日 08:30:15   作者:焦糖泡芙  
在項目開發(fā)過程中,發(fā)現(xiàn)有很多時候進行l(wèi)ocalStorage.setItem()操作設置本地存儲后,頁面必須刷新才能夠獲取到存儲數(shù)據(jù),為了解決這個問題,就必須要用到自定義localStorage監(jiān)聽事件了,所以本文給大家介紹了自定義localStorage監(jiān)聽事件,需要的朋友可以參考下

一、問題

在項目開發(fā)過程中,發(fā)現(xiàn)有很多時候進行localStorage.setItem()操作設置本地存儲后,頁面必須刷新才能夠獲取到存儲數(shù)據(jù),而有些時候本地緩存更新后,頁面無法通過再次刷新以獲取本地緩存,這就導致依賴本地緩存的數(shù)據(jù)無法進行更新。為了解決這個問題,就必須要用到自定義localStorage監(jiān)聽事件了

二、解決方法

下面以Vue3項目為例進行自定義localStorage監(jiān)聽事件方法闡述。

首先,在根目錄src目錄下新建utils文件夾,在utils文件夾下新增overwrite.js文件,文件內(nèi)容如下:

// overwrite.js

// 重寫setItem事件,當使用setItem的時候,觸發(fā),window.dispatchEvent派發(fā)事件
export 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)
    }
  }
  

接下來,在項目的入口文件main.js下引入自定義的重寫方法

1、引入文件的方法

import {dispatchEventStroage} from "./utils/overwrite"

2、全局使用即可。

dispatchEventStroage()

3、完整main.js引入的示例,如有不清楚的地方請參考下面的完整main.js示例:

import {createApp} from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
import {createPinia} from 'pinia'
import screenShort from "vue-web-screen-shot";
import {dispatchEventStroage} from "./utils/overwrite"

const app = createApp(App)

dispatchEventStroage()

app.use(router)
app.use(createPinia())
app.use(screenShort, {enableWebRtc: true})
app.mount('#app')

最后,在需要的地方使用即可,使用示例如下:

window.addEventListener('setItemEvent', (e) => {
      console.log("監(jiān)聽到觸發(fā)了localStorage.setItem事件",e)
  })

到此這篇關于JavaScript自定義localStorage監(jiān)聽事件的解決方法的文章就介紹到這了,更多相關JS自定義localStorage監(jiān)聽事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

阿城市| 丰县| 聂拉木县| 铅山县| 涡阳县| 外汇| 茌平县| 通城县| 永昌县| 观塘区| 兴业县| 疏勒县| 宿松县| 海阳市| 泉州市| 八宿县| 瑞金市| 四平市| 疏勒县| 甘洛县| 河北区| 屯门区| 思南县| 石楼县| 合川市| 博客| 闸北区| 鹤壁市| 南通市| 宁津县| 宁阳县| 临洮县| 炎陵县| 鲜城| 灵寿县| 视频| 老河口市| 达拉特旗| 利辛县| 泰兴市| 黑龙江省|