亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue實(shí)現(xiàn)實(shí)時(shí)更新sessionStorage數(shù)據(jù)的示例代碼

 更新時(shí)間:2023年06月25日 15:49:09   作者:云卷云舒%  
這篇文章主要為大家詳細(xì)介紹了Vue如何實(shí)現(xiàn)實(shí)時(shí)更新sessionStorage數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下

最近在做一個(gè)需求是:頁面右上角顯示未讀消息數(shù)量,當(dāng)用戶讀過消息后,數(shù)量要時(shí)時(shí)更新。

我這里直接將數(shù)據(jù)存儲在了sessionStorage中,但是當(dāng)我修改數(shù)據(jù)時(shí)頁面并沒有及時(shí)更新,只有刷新頁面后數(shù)據(jù)才會更新。

解決辦法:

1、在main.js中添加全局獲取緩存數(shù)據(jù)

只需修改xxx為自己定義的key即可

Vue.prototype.resetSetItem = function (key, newVal) {
  if (key === 'xxxx') {
    // 創(chuàng)建一個(gè)StorageEvent事件
    var newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        sessionStorage.setItem(k, val);
        // 初始化創(chuàng)建的事件
        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
        // 派發(fā)對象
        window.dispatchEvent(newStorageEvent)
      }
    }
    return storage.setItem(key, newVal);
  }
}

2.在需要保存數(shù)據(jù)的地方進(jìn)行調(diào)用

(key,value)

this.resetSetItem('xxxxx', value);

3.在需要獲取數(shù)據(jù)的地方進(jìn)行sessionStorage變化監(jiān)聽

mounted:頁面創(chuàng)建的時(shí)候添加監(jiān)聽

beforeDestroy: 在頁面銷毀的時(shí)候移除監(jiān)聽

  mounted() {
    window.addEventListener('setItem', this.updateUnreadMsgCount);
  },
 methods: {
    updateUnreadMsgCount() {
      this.unreadMessagesCount = sessionStorage.getItem('xxxxxx');
    },
}
  beforeDestroy() {
    window.removeEventListener('setItem', this.updateUnreadMsgCount);
  },

至此~就可以實(shí)現(xiàn)sessionStorage中的數(shù)據(jù)實(shí)時(shí)更新了

另外一種實(shí)現(xiàn)思路(親測有效~~~):

若是將這個(gè)數(shù)量存儲到vuex的話,刷新頁面數(shù)據(jù)會丟失【但是可以使用vuex數(shù)據(jù)持久化vuex-persistedstate插件解決這一問題,原理也是幫助我們存儲在localStorage或者sessionStorage中,并且vuex中的數(shù)據(jù)變化后頁面也會跟著變化】

vuex中使用vuex-persistedstate插件實(shí)現(xiàn)數(shù)據(jù)持久化

vuex是在中大型項(xiàng)目中必不可少的狀態(tài)管理組件,刷新會重新更新狀態(tài),但是有時(shí)候我們并不希望如此。例如全局相關(guān)的,如登錄狀態(tài)、token、以及一些不常更新的狀態(tài)等,我們更希望能夠固化到本地,減少無用的接口訪問,以及更佳的用戶體驗(yàn)。

  • 那么我們可以采用存儲到localStorage的方式來解決這一問題,
  • 也可以監(jiān)聽頁面刷新的時(shí)候重新處理數(shù)據(jù)
  • 也可以用現(xiàn)在比較流行的插件vuex-persistedstate來解決(其實(shí)他的原理也是存儲在了local storage,但是不用我們手動去處理了)

讓我們來看下使用插件是如何做到持久化的

1.安裝插件

npm i vuex-persistedstate --save

2.之前怎么寫vuex的數(shù)據(jù)管理還怎么寫,只不過在store/index.js文件引入一下這個(gè)插件,并配置即可

這種默認(rèn)寫法會將vuex中的所有數(shù)據(jù)存儲到Local Storage中,

import createPersistedState from 'vuex-persistedstate'
export default new Vuex.Store({
    // ...
    plugins: [persistedState()]
})

如果我們想存儲到sessionStorage,又或者只想持久化某些數(shù)據(jù)的話,可以使用以下兩個(gè)屬性:

storage和reducer

  plugins: [createPersistedState({
    storage: window.sessionStorage,
    reducer(val) {
      console.log(val)
      return {
        // 只儲存state中的includes的leftList數(shù)據(jù)【這里多了一層includes,是因?yàn)楸卷?xiàng)目原因,大家可以打印一下val根據(jù)自己項(xiàng)目情況來賦值】
        leftList: val.includes.leftList
      }
    }
  })
]

完整代碼如下:

測試1:將所有數(shù)據(jù)存儲到Session Storage中

測試2:將某個(gè)數(shù)據(jù)存儲到Local Storage中

另,Vue3中如果項(xiàng)目使用了ts,那么Vuex對ts是不太友好的,可以考慮使用pinia插件代替vuex

到此這篇關(guān)于Vue實(shí)現(xiàn)實(shí)時(shí)更新sessionStorage數(shù)據(jù)的示例代碼的文章就介紹到這了,更多相關(guān)Vue更新sessionStorage數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中mintui的field實(shí)現(xiàn)blur和focus事件的方法

    Vue中mintui的field實(shí)現(xiàn)blur和focus事件的方法

    今天小編就為大家分享一篇Vue中mintui的field實(shí)現(xiàn)blur和focus事件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue實(shí)現(xiàn)釘釘?shù)目记谌諝v

    vue實(shí)現(xiàn)釘釘?shù)目记谌諝v

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)釘釘?shù)目记谌諝v,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • vue之debounce屬性被移除及處理詳解

    vue之debounce屬性被移除及處理詳解

    今天小編就為大家分享一篇vue之debounce屬性被移除及處理詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue Router中的冗余導(dǎo)航錯(cuò)誤及解決方案

    Vue Router中的冗余導(dǎo)航錯(cuò)誤及解決方案

    在現(xiàn)代前端開發(fā)中,單頁應(yīng)用(SPA)已經(jīng)成為主流,而 Vue.js 作為一款流行的前端框架,其官方路由庫 Vue Router 則是構(gòu)建 SPA 的核心工具之一,在使用 Vue Router 的過程中,開發(fā)者可能會遇到一些常見的錯(cuò)誤,本文將深入探討這一錯(cuò)誤的原因、影響以及解決方案
    2025-01-01
  • vue-router跳轉(zhuǎn)方式的區(qū)別解析

    vue-router跳轉(zhuǎn)方式的區(qū)別解析

    在Vue中,router-link稱為聲明式路由,:to綁定為跳轉(zhuǎn)的目標(biāo)地址,一種是通過name,另一種是path,這篇文章主要介紹了vue-router跳轉(zhuǎn)方式的區(qū)別,需要的朋友可以參考下
    2022-12-12
  • vue中數(shù)據(jù)請求axios的封裝和使用

    vue中數(shù)據(jù)請求axios的封裝和使用

    這篇文章主要介紹了vue中數(shù)據(jù)請求axios的封裝和使用,Axios?是一個(gè)基于?promise?的?HTTP?庫,下面文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • vue中nextTick用法實(shí)例

    vue中nextTick用法實(shí)例

    在本篇文章里小編給大家整理了關(guān)于vue中nextTick用法實(shí)例以及相關(guān)代碼內(nèi)容,需要的朋友們可以參考下。
    2019-09-09
  • Vuex實(shí)現(xiàn)簡單購物車

    Vuex實(shí)現(xiàn)簡單購物車

    這篇文章主要為大家詳細(xì)介紹了Vuex實(shí)現(xiàn)簡單購物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • vue實(shí)現(xiàn)拖拽效果

    vue實(shí)現(xiàn)拖拽效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Vue 項(xiàng)目部署到服務(wù)器的問題解決方法

    Vue 項(xiàng)目部署到服務(wù)器的問題解決方法

    本篇文章主要介紹了Vue 項(xiàng)目部署到服務(wù)器的問題解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論