前端項(xiàng)目中監(jiān)聽(tīng)localStorage的變化
背景
前幾天有位兄弟問(wèn)我,如何去監(jiān)聽(tīng)localStorage的變化呢??我確實(shí)是沒(méi)遇到過(guò)這種場(chǎng)景,但是我仔細(xì)想想,似乎想要達(dá)到這樣的效果,其實(shí)也不難。
解題思路
第一種:storageEvent
其實(shí)JavaScript原生就有一個(gè)監(jiān)聽(tīng)localStorage變化的事件——storage,使用方法如下
window.addEventListener('storage', () => { // callback })
我們來(lái)看看MDN上是怎么描述這個(gè)事件的:
也就是說(shuō),同域下的不同頁(yè)面A、B,只有本頁(yè)面修改了localStorage才會(huì)觸發(fā)對(duì)方的storage事件
但是顯然這種方案很不適用在現(xiàn)在的大部分項(xiàng)目中,畢竟這種方案太局限了,不能應(yīng)用在本頁(yè)面監(jiān)聽(tīng)的場(chǎng)景
第二種:封裝localStroage
其實(shí)就是代理一下對(duì)localStorage進(jìn)行多一層的封裝,使得我們每次在操作localStorage的時(shí)候,都會(huì)多走一層函數(shù),而我們就可以在這一層中去執(zhí)行監(jiān)聽(tīng)的事件了,下面是簡(jiǎn)單的代碼例子:
class CommonLocalStorage { private storage: Storage; constructor() { this.storage = window.localStorage; } set(key: string, value: any) { // 執(zhí)行監(jiān)聽(tīng)的操作 return this.storage.setItem(`${prefix}${key}`, value); } get(key: string) { // 執(zhí)行監(jiān)聽(tīng)的操作 return this.storage.getItem(`${prefix}${key}`); } del(key: string) { // 執(zhí)行監(jiān)聽(tīng)的操作 return this.storage.removeItem(`${prefix}${key}`); } clear() { // 執(zhí)行監(jiān)聽(tīng)的操作 this.storage.clear(); } } const commonStorage = new CommonLocalStorage(); export default commonStorage
這種方式也被應(yīng)用于很多比較出名的項(xiàng)目中,大家可以去看那些開(kāi)源的項(xiàng)目中,基本很少直接使用localStorage,而是都是會(huì)封裝一層的
以上就是前端項(xiàng)目中監(jiān)聽(tīng)localStorage的變化的詳細(xì)內(nèi)容,更多關(guān)于前端監(jiān)聽(tīng)localStorage變化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 (七)數(shù)據(jù)綁定詳細(xì)介紹
這篇文章主要介紹了微信小程序數(shù)據(jù)綁定詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-09-09package.json中browser?module?main字段優(yōu)先級(jí)對(duì)比
這篇文章主要介紹了package.json中browser?module?main字段的優(yōu)先級(jí)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07JavaScript中直接寫(xiě)undefined的錯(cuò)誤及用法剖析
這篇文章主要介紹了JavaScript中直接寫(xiě)undefined的用法剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07JavaScript中七種流行的開(kāi)源機(jī)器學(xué)習(xí)框架
今天小編就為大家分享一篇關(guān)于JavaScript中五種流行的開(kāi)源機(jī)器學(xué)習(xí)框架,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10JS中的every()對(duì)空數(shù)組總返回true原理分析
這篇文章主要為大家介紹了JS中的every()對(duì)空數(shù)組總返回true原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09微信小程序 實(shí)現(xiàn)拖拽事件監(jiān)聽(tīng)實(shí)例詳解
這篇文章主要介紹了微信小程序 實(shí)現(xiàn)拖拽事件監(jiān)聽(tīng)實(shí)例詳解的相關(guān)資料,在開(kāi)發(fā)不少應(yīng)用或者軟件都要用到這樣的方法,這里就對(duì)微信小程序?qū)崿F(xiàn)該功能進(jìn)行介紹,需要的朋友可以參考下2016-11-11