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

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

 更新時(shí)間:2024年10月18日 08:30:15   作者:焦糖泡芙  
在項(xiàng)目開發(fā)過程中,發(fā)現(xiàn)有很多時(shí)候進(jìn)行l(wèi)ocalStorage.setItem()操作設(shè)置本地存儲(chǔ)后,頁面必須刷新才能夠獲取到存儲(chǔ)數(shù)據(jù),為了解決這個(gè)問題,就必須要用到自定義localStorage監(jiān)聽事件了,所以本文給大家介紹了自定義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í)戰(zhàn)案例

    前端冒泡排序算法詳解及實(shí)戰(zhàn)案例

    這篇文章主要介紹了前端冒泡排序算法的相關(guān)資料,冒泡排序是一種簡(jiǎn)單的排序算法,通過比較相鄰元素并交換位置,實(shí)現(xiàn)元素排序,該算法的時(shí)間復(fù)雜度為O(n^2),空間復(fù)雜度為O(1),具有穩(wěn)定性,適用于小規(guī)模數(shù)據(jù)集和對(duì)穩(wěn)定性要求高的場(chǎng)景,需要的朋友可以參考下
    2024-10-10
  • ES6的解構(gòu)賦值實(shí)例詳解

    ES6的解構(gòu)賦值實(shí)例詳解

    解構(gòu)賦值允許你使用類似數(shù)組或?qū)ο笞置媪康恼Z法將數(shù)組和對(duì)象的屬性賦給各種變量。這篇文章主要介紹了ES6的解構(gòu)賦值的實(shí)例代碼 ,需要的朋友可以參考下
    2019-05-05
  • 實(shí)現(xiàn)js保留小數(shù)點(diǎn)后N位的代碼

    實(shí)現(xiàn)js保留小數(shù)點(diǎn)后N位的代碼

    最近在做項(xiàng)目的時(shí)候,遇到要保留小數(shù)點(diǎn)后N位的問題,經(jīng)過一番思索,最終完成了,這里記錄一下,下次需要直接就能拉出來用了
    2014-11-11
  • JavaScript初學(xué)者的10個(gè)迷你技巧

    JavaScript初學(xué)者的10個(gè)迷你技巧

    雖然JavaScript有很多的編程方法,但這里只挑選了10個(gè)技巧,這些技巧對(duì)初學(xué)者理解JavaScript來說是很好的的起點(diǎn)。
    2010-09-09
  • 改變layer confirm彈窗按鈕的顏色方法

    改變layer confirm彈窗按鈕的顏色方法

    今天小編就為大家分享一篇改變layer confirm彈窗按鈕的顏色方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript暫時(shí)性死區(qū)以及函數(shù)作用域

    JavaScript暫時(shí)性死區(qū)以及函數(shù)作用域

    這篇文章主要為大家介紹了JavaScript暫時(shí)性死區(qū)以及函數(shù)作用域示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • js獲取當(dāng)前路徑的簡(jiǎn)單示例代碼

    js獲取當(dāng)前路徑的簡(jiǎn)單示例代碼

    本篇文章主要是對(duì)js獲取當(dāng)前路徑的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • 微信小程序使用input組件實(shí)現(xiàn)密碼框功能【附源碼下載】

    微信小程序使用input組件實(shí)現(xiàn)密碼框功能【附源碼下載】

    這篇文章主要介紹了微信小程序使用input組件實(shí)現(xiàn)密碼框功能,涉及input組件布局設(shè)置相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2017-12-12
  • 前端內(nèi)網(wǎng)開發(fā)npm安裝的幾種方法小結(jié)

    前端內(nèi)網(wǎng)開發(fā)npm安裝的幾種方法小結(jié)

    這篇文章主要介紹了如何在不聯(lián)網(wǎng)或離線環(huán)境下安裝npm依賴,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2025-01-01
  • 原生js仿瀏覽器滾動(dòng)條效果

    原生js仿瀏覽器滾動(dòng)條效果

    本文主要介紹了原生js仿瀏覽器滾動(dòng)條效果的實(shí)例。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03

最新評(píng)論