欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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'))))
    }

整體來說明一下代碼

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

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

方法二、狀態(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é)

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

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

相關(guān)文章

  • 深入理解vuex2.0 之 modules

    深入理解vuex2.0 之 modules

    本篇文章主要介紹了vuex2.0 之 modules,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue的watch和computed方法的使用及區(qū)別介紹

    Vue的watch和computed方法的使用及區(qū)別介紹

    Vue的watch屬性可以用來監(jiān)聽data屬性中數(shù)據(jù)的變化。這篇文章主要介紹了Vue的watch和computed方法的使用及區(qū)別,需要的朋友可以參考下
    2018-09-09
  • 解決vue頁面DOM操作不生效的問題

    解決vue頁面DOM操作不生效的問題

    下面小編就為大家分享一篇解決vue頁面DOM操作不生效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 從零開始Vue3數(shù)據(jù)交互之promise用法詳解

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

    這篇文章主要介紹了Axios的基本使用,包括異步編程的基礎(chǔ)知識,如Promise的介紹、特點(diǎn)和基本用法,以及如何使用then、catch和async/await來處理異步操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • vue-cli安裝使用流程步驟詳解

    vue-cli安裝使用流程步驟詳解

    這篇文章主要介紹了 vue-cli安裝使用流程,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue項(xiàng)目啟動(dòng)時(shí)無法識別es6的擴(kuò)展語法的解決

    vue項(xiàng)目啟動(dòng)時(shí)無法識別es6的擴(kuò)展語法的解決

    啟動(dòng)項(xiàng)目時(shí)遇到ES6的拓展運(yùn)算符報(bào)錯(cuò)可以通過切換到淘寶鏡像,以及在項(xiàng)目根目錄下新增.babelrc和postcss.config.js文件來解決,這些操作有助于正確配置項(xiàng)目環(huán)境,從而避免報(bào)錯(cuò),并保證項(xiàng)目的順利運(yùn)行,希望這些經(jīng)驗(yàn)?zāi)軌驇椭接龅较嗤瑔栴}的開發(fā)者
    2024-10-10
  • Vue和uniapp中該如何使用canvas詳解

    Vue和uniapp中該如何使用canvas詳解

    說起canvas是css3新增的標(biāo)簽,而餅狀圖又是canvas經(jīng)典,我們公司現(xiàn)在正在用uni-app框架去研發(fā)APP,下面這篇文章主要給大家介紹了關(guān)于Vue和uniapp中該如何使用canvas的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vue中js實(shí)現(xiàn)點(diǎn)擊復(fù)制文本到剪貼板的3種方案

    vue中js實(shí)現(xiàn)點(diǎn)擊復(fù)制文本到剪貼板的3種方案

    今天遇到一個(gè)復(fù)制粘貼的需求,研究之后發(fā)現(xiàn)太簡單了,這篇文章主要給大家介紹了關(guān)于vue中js實(shí)現(xiàn)點(diǎn)擊復(fù)制文本到剪貼板的3種方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 如何去掉ElementUI Table的hover變色問題

    如何去掉ElementUI Table的hover變色問題

    這篇文章主要介紹了如何去掉ElementUI Table的hover變色問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue 動(dòng)態(tài)添加路由及生成菜單的方法示例

    Vue 動(dòng)態(tài)添加路由及生成菜單的方法示例

    這篇文章主要介紹了Vue 動(dòng)態(tài)添加路由及生成菜單的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論