JavaScript自定義localStorage監(jiān)聽事件的解決方法
一、問題
在項(xiàng)目開發(fā)過程中,發(fā)現(xiàn)有很多時(shí)候進(jìn)行localStorage.setItem()
操作設(shè)置本地存儲(chǔ)后,頁面必須刷新才能夠獲取到存儲(chǔ)數(shù)據(jù),而有些時(shí)候本地緩存更新后,頁面無法通過再次刷新以獲取本地緩存,這就導(dǎo)致依賴本地緩存的數(shù)據(jù)無法進(jìn)行更新。為了解決這個(gè)問題,就必須要用到自定義localStorage
監(jiān)聽事件了
二、解決方法
下面以Vue3項(xiàng)目為例進(jìn)行自定義localStorage
監(jiān)聽事件方法闡述。
首先,在根目錄src
目錄下新建utils
文件夾,在utils
文件夾下新增overwrite.js
文件,文件內(nèi)容如下:
// overwrite.js // 重寫setItem事件,當(dāng)使用setItem的時(shí)候,觸發(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) } }
接下來,在項(xiàng)目的入口文件main.js
下引入自定義的重寫方法
1、引入文件的方法
import {dispatchEventStroage} from "./utils/overwrite"
2、全局使用即可。
dispatchEventStroage()
3、完整main.js
引入的示例,如有不清楚的地方請(qǐng)參考下面的完整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) })
到此這篇關(guān)于JavaScript自定義localStorage監(jiān)聽事件的解決方法的文章就介紹到這了,更多相關(guān)JS自定義localStorage監(jiān)聽事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實(shí)現(xiàn)js保留小數(shù)點(diǎn)后N位的代碼
最近在做項(xiàng)目的時(shí)候,遇到要保留小數(shù)點(diǎn)后N位的問題,經(jīng)過一番思索,最終完成了,這里記錄一下,下次需要直接就能拉出來用了2014-11-11JavaScript初學(xué)者的10個(gè)迷你技巧
雖然JavaScript有很多的編程方法,但這里只挑選了10個(gè)技巧,這些技巧對(duì)初學(xué)者理解JavaScript來說是很好的的起點(diǎn)。2010-09-09JavaScript暫時(shí)性死區(qū)以及函數(shù)作用域
這篇文章主要為大家介紹了JavaScript暫時(shí)性死區(qū)以及函數(shù)作用域示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07微信小程序使用input組件實(shí)現(xiàn)密碼框功能【附源碼下載】
這篇文章主要介紹了微信小程序使用input組件實(shí)現(xiàn)密碼框功能,涉及input組件布局設(shè)置相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12前端內(nèi)網(wǎng)開發(fā)npm安裝的幾種方法小結(jié)
這篇文章主要介紹了如何在不聯(lián)網(wǎng)或離線環(huán)境下安裝npm依賴,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2025-01-01