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

前端項目中監(jiān)聽localStorage的變化

 更新時間:2022年06月14日 10:23:09   作者:Sunshine_Lin  
這篇文章主要為大家介紹了前端項目中監(jiān)聽localStorage的變化的解決思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

背景

前幾天有位兄弟問我,如何去監(jiān)聽localStorage的變化呢??我確實是沒遇到過這種場景,但是我仔細想想,似乎想要達到這樣的效果,其實也不難。

解題思路

第一種:storageEvent

其實JavaScript原生就有一個監(jiān)聽localStorage變化的事件——storage,使用方法如下

window.addEventListener('storage', () => {
  // callback
})

我們來看看MDN上是怎么描述這個事件的:

也就是說,同域下的不同頁面A、B,只有本頁面修改了localStorage才會觸發(fā)對方的storage事件

但是顯然這種方案很不適用在現(xiàn)在的大部分項目中,畢竟這種方案太局限了,不能應(yīng)用在本頁面監(jiān)聽的場景

第二種:封裝localStroage

其實就是代理一下對localStorage進行多一層的封裝,使得我們每次在操作localStorage的時候,都會多走一層函數(shù),而我們就可以在這一層中去執(zhí)行監(jiān)聽的事件了,下面是簡單的代碼例子:

class CommonLocalStorage {
  private storage: Storage;
  constructor() {
    this.storage = window.localStorage;
  }
  set(key: string, value: any) {
    // 執(zhí)行監(jiān)聽的操作
    return this.storage.setItem(`${prefix}${key}`, value);
  }
  get(key: string) {
    // 執(zhí)行監(jiān)聽的操作
    return this.storage.getItem(`${prefix}${key}`);
  }
  del(key: string) {
    // 執(zhí)行監(jiān)聽的操作
    return this.storage.removeItem(`${prefix}${key}`);
  }
  clear() {
    // 執(zhí)行監(jiān)聽的操作
    this.storage.clear();
  }
}
const commonStorage = new CommonLocalStorage();
export default commonStorage

這種方式也被應(yīng)用于很多比較出名的項目中,大家可以去看那些開源的項目中,基本很少直接使用localStorage,而是都是會封裝一層的

以上就是前端項目中監(jiān)聽localStorage的變化的詳細內(nèi)容,更多關(guān)于前端監(jiān)聽localStorage變化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

河间市| 得荣县| 长白| 阜南县| 龙南县| 诸城市| 白朗县| 张家口市| 博客| 句容市| 青田县| 顺平县| 台中市| 平果县| 龙门县| 永新县| 高雄市| 江都市| 右玉县| 遂平县| 富阳市| 綦江县| 惠安县| 宾阳县| 鲁山县| 二手房| 磐石市| 宁安市| 息烽县| 双江| 兴仁县| 青河县| 门头沟区| 屯昌县| 石林| 盖州市| 佳木斯市| 虞城县| 边坝县| 云南省| 锡林浩特市|