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

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ù)存儲(chǔ)在了sessionStorage中,但是當(dāng)我修改數(shù)據(jù)時(shí)頁面并沒有及時(shí)更新,只有刷新頁面后數(shù)據(jù)才會(huì)更新。

解決辦法:

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ā)對(duì)象
        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)思路(親測(cè)有效~~~):

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

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

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

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

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

1.安裝插件

npm i vuex-persistedstate --save

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

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

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

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

storage和reducer

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

完整代碼如下:

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

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

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

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

相關(guān)文章

  • vue祖孫組件之間的數(shù)據(jù)傳遞案例

    vue祖孫組件之間的數(shù)據(jù)傳遞案例

    這篇文章主要介紹了vue祖孫組件之間的數(shù)據(jù)傳遞案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • vue+element?ui表格添加多個(gè)搜索條件篩選功能(前端查詢)

    vue+element?ui表格添加多個(gè)搜索條件篩選功能(前端查詢)

    這篇文章主要給大家介紹了關(guān)于vue+element?ui表格添加多個(gè)搜索條件篩選功能的相關(guān)資料,最近在使用element-ui的表格組件時(shí),遇到了搜索框功能的實(shí)現(xiàn)問題,需要的朋友可以參考下
    2023-08-08
  • vue.js管理后臺(tái)table組件封裝的方法

    vue.js管理后臺(tái)table組件封裝的方法

    table作為數(shù)據(jù)展示組件,在日常開發(fā)中經(jīng)常被用到,這篇文章主要給大家介紹了關(guān)于vue.js管理后臺(tái)table組件封裝的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • VUE 單頁面使用 echart 窗口變化時(shí)的用法

    VUE 單頁面使用 echart 窗口變化時(shí)的用法

    這篇文章主要介紹了VUE 單頁面使用 echart 窗口變化時(shí)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vuex存儲(chǔ)數(shù)據(jù)的幾種方法實(shí)例詳解

    vuex存儲(chǔ)數(shù)據(jù)的幾種方法實(shí)例詳解

    在瀏覽網(wǎng)頁時(shí)我們有些時(shí)候需要記住一些用戶選擇的信息,比如登陸時(shí)我們?nèi)绻x擇了記住密碼,那么我們下次進(jìn)入該網(wǎng)頁時(shí)就會(huì)有你上次的登陸信息,下面這篇文章主要給大家介紹了關(guān)于vuex存儲(chǔ)數(shù)據(jù)的幾種方法,需要的朋友可以參考下
    2022-10-10
  • vue3.0中sass全局的使用過程

    vue3.0中sass全局的使用過程

    這篇文章主要介紹了vue3.0中sass全局的使用過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 從零開始Vue3數(shù)據(jù)交互之promise用法詳解

    從零開始Vue3數(shù)據(jù)交互之promise用法詳解

    這篇文章主要介紹了Axios的基本使用,包括異步編程的基礎(chǔ)知識(shí),如Promise的介紹、特點(diǎn)和基本用法,以及如何使用then、catch和async/await來處理異步操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • vue項(xiàng)目動(dòng)態(tài)設(shè)置iframe元素高度的操作代碼

    vue項(xiàng)目動(dòng)態(tài)設(shè)置iframe元素高度的操作代碼

    在現(xiàn)代Web開發(fā)中,iframe元素常用于嵌入外部?jī)?nèi)容到當(dāng)前網(wǎng)頁中,比如在線文檔、視頻播放器或是廣告,Vue框架提供了強(qiáng)大的工具來解決這個(gè)問題,通過動(dòng)態(tài)設(shè)置iframe元素的高度,我們可以確保頁面布局既美觀又高效,本文給大家介紹了vue項(xiàng)目動(dòng)態(tài)設(shè)置iframe元素高度的操作
    2024-10-10
  • Vue項(xiàng)目打包dist目錄詳解

    Vue項(xiàng)目打包dist目錄詳解

    文章解釋了Vue項(xiàng)目打包后dist目錄下各文件夾及其文件的功能和作用,主要包括CSS文件、字體文件、圖片文件、JS文件等,還說明了Sourcemap的作用及externals配置的使用方法
    2026-04-04
  • vue的過濾器filter實(shí)例詳解

    vue的過濾器filter實(shí)例詳解

    本文通過實(shí)例代碼給大家介紹了vue的過濾器filter的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09

最新評(píng)論

房山区| 县级市| 新沂市| 临颍县| 黄大仙区| 尉氏县| 成都市| 屏山县| 西林县| 义马市| 庄河市| 柞水县| 中阳县| 仁布县| 鲜城| 依安县| 庆城县| 洛浦县| 揭阳市| 惠州市| 平陆县| 禄丰县| 乐业县| 望都县| 南川市| 沁水县| 广饶县| 都江堰市| 新兴县| 融水| 黔西县| 饶阳县| 平潭县| 攀枝花市| 鄂托克旗| 巴东县| 清苑县| 崇信县| 衡山县| 交口县| 满洲里市|