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

vuex數(shù)據(jù)狀態(tài)持久化問(wèn)題

 更新時(shí)間:2023年10月10日 09:20:25   作者:前端小白在寫(xiě)bug  
這篇文章主要介紹了vuex數(shù)據(jù)狀態(tài)持久化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在VUE項(xiàng)目中,由于是單頁(yè)應(yīng)用,vuex中的數(shù)據(jù)在頁(yè)面刷新時(shí)就會(huì)被清除,所以我們要考慮怎樣讓vuex中的數(shù)據(jù)持久保存在瀏覽器中,至少不能每次刷新時(shí)都丟失登錄狀態(tài)。

本文介紹VUE項(xiàng)目中常用到的兩種vuex持久化的方法,底層實(shí)現(xiàn)原理一直,方法不太一樣,可以在項(xiàng)目中根據(jù)實(shí)際來(lái)區(qū)分

方法一、瀏覽器監(jiān)聽(tīng)+本地存儲(chǔ)

我們可以監(jiān)聽(tīng)瀏覽器的刷新,在頁(yè)面刷新時(shí)將vuex內(nèi)的數(shù)據(jù)保存在本地存儲(chǔ)中(根據(jù)項(xiàng)目需要可以考慮保存在sessionStorage或者localStorage中)

在App.vue中,created生命周期寫(xiě)我們的監(jiān)聽(tīng)方法

window.addEventListener("beforeunload", () => {
    	sessionStorage.setItem("store", JSON.stringify(this.$store.state))
    })

然后在進(jìn)入到created生命周期時(shí),去到sessionStorage/localStorage中的數(shù)據(jù),將數(shù)據(jù)替換到vuex中

if(sessionStorage.getItem("store")) {
    	this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
    }

整體來(lái)說(shuō)明一下代碼

created() {
    // 頁(yè)面加載時(shí),讀取sessionStorage中的狀態(tài)信息
    if(sessionStorage.getItem("store")) {
      this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
    }
    // 在頁(yè)面刷新時(shí),將vuex中的信息保存到sessionStorage里
    window.addEventListener("beforeunload", () => {
      sessionStorage.setItem("store", JSON.stringify(this.$store.state))
    })
  },

這個(gè)方法的好處是不需要借助其他三方組件庫(kù),實(shí)現(xiàn)vuex全量數(shù)據(jù)持久化,壞處是所有數(shù)據(jù)保存在本地,會(huì)有一些較敏感數(shù)據(jù)容易被查看到,另外如果做某些指定數(shù)據(jù)持久化時(shí)會(huì)比較麻煩,所以下面介紹第二種更為簡(jiǎn)單的方法

方法二、狀態(tài)持久化插件

推薦使用 vuex-persistedstate 插件

使用方法

如下:

1、在項(xiàng)目中安裝該插件

cnpm i --save vuex-persistedstate

2、在 src/store/index.js中引入該插件

import createPersistedState from 'vuex-persistedstate'

在vuex中使用

plugins: [createPersistedState()]

整體代碼

如下:

import Vue from 'vue'
	import Vuex from 'vuex'
	import createPersistedState from 'vuex-persistedstate'
	Vue.use(Vuex)
	export default new Vuex.Store({
	  plugins: [createPersistedState({
	    storage: window.sessionStorage, // 默認(rèn)位置是 localStorage
	    reducer: (state) => {
	      return {
	        // 默認(rèn)是全部緩存,在這里可以設(shè)置需要緩存的狀態(tài)
	        token: state.token
	      }
	    }
	  })],
	  state: {
	    token: ''
	  },
	  mutations: {
	  },
  }

優(yōu)點(diǎn):

1、可以更便捷設(shè)置存儲(chǔ)位置 為sessionStorage或者 localStorage中,默認(rèn)為 localStorage

2、可以更便捷設(shè)置需要存儲(chǔ)的內(nèi)容,如當(dāng)需要存儲(chǔ)token時(shí),只需要將token放入進(jìn)入即可

總結(jié)

本文插件只簡(jiǎn)單概述了一下?tīng)顟B(tài)持久化插件的用法,還有更多用法并未用到,在此并未講述,有興趣的朋友可以此插件github地址做更多了解(當(dāng)然還有很多其他很好用的插件和方法,本文只提到了我自己項(xiàng)目中使用過(guò)的)

好了,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用vue + koa2 + mockjs模擬數(shù)據(jù)的方法教程

    利用vue + koa2 + mockjs模擬數(shù)據(jù)的方法教程

    這篇文章主要給大家介紹了關(guān)于利用vue + koa2 + mockjs模擬數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 在vue中使用setInterval的方法示例

    在vue中使用setInterval的方法示例

    這篇文章主要介紹了在vue中使用setInterval的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue組件中常見(jiàn)的props默認(rèn)值陷阱問(wèn)題

    Vue組件中常見(jiàn)的props默認(rèn)值陷阱問(wèn)題

    這篇文章主要介紹了避免Vue組件中常見(jiàn)的props默認(rèn)值陷阱,本文通過(guò)問(wèn)題展示及解決方案給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • gulp模塊使用方法示例詳解

    gulp模塊使用方法示例詳解

    這篇文章主要為大家介紹了gulp模塊使用方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 基于vue-draggable 實(shí)現(xiàn)三級(jí)拖動(dòng)排序效果

    基于vue-draggable 實(shí)現(xiàn)三級(jí)拖動(dòng)排序效果

    這篇文章主要介紹了基于vue-draggable 實(shí)現(xiàn)三級(jí)拖動(dòng)排序效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 基于WebRTC實(shí)現(xiàn)音視頻通話功能

    基于WebRTC實(shí)現(xiàn)音視頻通話功能

    WebRTC作為一種開(kāi)放標(biāo)準(zhǔn)的實(shí)時(shí)通信協(xié)議,能輕松實(shí)現(xiàn)瀏覽器之間的實(shí)時(shí)音視頻通信,本次主要分享基于WebRTC的音視頻通話技術(shù),講解WebRTC原理和音視頻傳輸?shù)汝P(guān)鍵概念,通過(guò)案例實(shí)踐,帶大家掌握如何搭建一個(gè)音視頻通話應(yīng)用,需要的朋友可以參考下
    2024-05-05
  • Vue實(shí)現(xiàn)動(dòng)態(tài)顯示表單項(xiàng)填寫(xiě)進(jìn)度功能

    Vue實(shí)現(xiàn)動(dòng)態(tài)顯示表單項(xiàng)填寫(xiě)進(jìn)度功能

    這篇文章主要介紹了Vue實(shí)現(xiàn)動(dòng)態(tài)顯示表單項(xiàng)填寫(xiě)進(jìn)度功能,此功能可以幫助用戶了解表單填寫(xiě)的進(jìn)度和當(dāng)前狀態(tài),提高用戶體驗(yàn),通常實(shí)現(xiàn)的方式是在表單中添加進(jìn)度條,根據(jù)用戶填寫(xiě)狀態(tài)動(dòng)態(tài)更新進(jìn)度條,感興趣的同學(xué)可以參考下文
    2023-05-05
  • Vue computed計(jì)算屬性的使用方法

    Vue computed計(jì)算屬性的使用方法

    這篇文章主要為大家詳細(xì)介紹了Vue computed計(jì)算屬性的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 前端uniapp微信小程序跨域問(wèn)題的解決方法

    前端uniapp微信小程序跨域問(wèn)題的解決方法

    跨域指的是在瀏覽器中,當(dāng)一個(gè)網(wǎng)頁(yè)嘗試加載另一個(gè)不同域名(或協(xié)議、端口號(hào))下的資源時(shí)所面臨的限制,這篇文章主要給大家介紹了關(guān)于前端uniapp微信小程序跨域問(wèn)題的解決方法,需要的朋友可以參考下
    2024-08-08
  • vue實(shí)現(xiàn)在線預(yù)覽pdf文件和下載(pdf.js)

    vue實(shí)現(xiàn)在線預(yù)覽pdf文件和下載(pdf.js)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)在線預(yù)覽pdf文件和下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論

无棣县| 平度市| 南宫市| 南丹县| 综艺| 洪洞县| 平谷区| 武山县| 大连市| 张北县| 沁阳市| 晋江市| 涟水县| 平谷区| 贺州市| 绥滨县| 景泰县| 苍梧县| 正蓝旗| 筠连县| 友谊县| 武宣县| 建湖县| 陕西省| 盈江县| 华安县| 安龙县| 池州市| 德钦县| 张家港市| 扎赉特旗| 北流市| 祁连县| 资阳市| 基隆市| 马鞍山市| 江川县| 广水市| 西吉县| 安岳县| 根河市|