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

vuex數(shù)據(jù)持久化的兩種實(shí)現(xiàn)方案

 更新時(shí)間:2021年07月13日 11:49:36   作者:下落香樟樹  
在vuex的時(shí)候刷新以后里面存儲(chǔ)的state就會(huì)被瀏覽器釋放掉,因?yàn)槲覀兊膕tate都是存儲(chǔ)在內(nèi)存中的,所以一刷新頁面就會(huì)把state中的數(shù)據(jù)重置,這就涉及到vue數(shù)據(jù)持久化的問題,這篇文章主要給大家介紹了關(guān)于vuex數(shù)據(jù)持久化的兩種實(shí)現(xiàn)方案,需要的朋友可以參考下

業(yè)務(wù)需求:

在基于vue開發(fā)SPA項(xiàng)目時(shí),為了解決頁面刷新后數(shù)據(jù)丟失的問題,我們一般都是將數(shù)據(jù)存儲(chǔ)在localstorage或sessionstorage中;當(dāng)數(shù)據(jù)需要全局處理統(tǒng)一管理時(shí),我們也會(huì)借助于vue官方提供的vuex來進(jìn)行數(shù)據(jù)的統(tǒng)一管理。vuex相比localstorage或sessionstorage來說,存儲(chǔ)數(shù)據(jù)更安全些。與此同時(shí),vuex也存在一些弊端,當(dāng)頁面刷新后,vuex中state存儲(chǔ)的數(shù)據(jù)同時(shí)也會(huì)被更新,vuex中存儲(chǔ)的數(shù)據(jù)不能持久化,需要監(jiān)聽處理來維持vuex存儲(chǔ)的數(shù)據(jù)狀態(tài)持久化。

為解決頁面刷新后vuex中存儲(chǔ)的數(shù)據(jù)狀態(tài)不能持久化的問題,我采取的方案是借助第三方插件工具來實(shí)現(xiàn)vuex數(shù)據(jù)的持久化存儲(chǔ),來解決頁面刷新后數(shù)據(jù)更新的問題。

方案一:vuex-persistedstate

安裝插件

yarn add vuex-persistedstate
// 或
npm install --save vuex-persistedstate

使用方法

import Vuex from "vuex";
// 引入插件
import createPersistedState from "vuex-persistedstate";

Vue.use(Vuex);

const state = {};
const mutations = {};
const actions = {};

const store = new Vuex.Store({
	state,
	mutations,
	actions,
  /* vuex數(shù)據(jù)持久化配置 */
	plugins: [
		createPersistedState({
      // 存儲(chǔ)方式:localStorage、sessionStorage、cookies
			storage: window.sessionStorage,
      // 存儲(chǔ)的 key 的key值
			key: "store",
			render(state) {
        // 要存儲(chǔ)的數(shù)據(jù):本項(xiàng)目采用es6擴(kuò)展運(yùn)算符的方式存儲(chǔ)了state中所有的數(shù)據(jù)
				return { ...state };
			}
		})
	]
});

export default store;

vuex中module數(shù)據(jù)的持久化存儲(chǔ)

/* module.js */
export const dataStore = {
  state: {
    data: []
  }
}
 
/* store.js */
import { dataStore } from './module'
 
const dataState = createPersistedState({
  paths: ['data']
});
 
export new Vuex.Store({
  modules: {
    dataStore
  },
  plugins: [dataState]
});

注意事項(xiàng):

  1. storage為存儲(chǔ)方式,可選值為localStorage、sessionStorage和cookies;
  2. localStorage和sessionStorage兩種存儲(chǔ)方式可以采用上述代碼中的寫法,若想采用cookies坐位數(shù)據(jù)存儲(chǔ)方式,則需要另外一種寫法;
  3. render接收一個(gè)函數(shù),返回值為一個(gè)對(duì)象;返回的對(duì)象中的鍵值對(duì)既是要持久化存儲(chǔ)的數(shù)據(jù);
  4. 若想持久化存儲(chǔ)部分?jǐn)?shù)據(jù),請(qǐng)?jiān)趓eturn的對(duì)象中采用key:value鍵值對(duì)的方式進(jìn)行數(shù)據(jù)存儲(chǔ),render函數(shù)中的參數(shù)既為state對(duì)象。

方案二:vuex-persist

安裝插件

yarn add vuex-persist
// 或
npm install --save vuex-persist

使用方法

import Vuex from "vuex";
// 引入插件
import VuexPersistence from "vuex-persist";

Vue.use(Vuex);
//  初始化
const state = {
	userName:'admin'
};
const mutations = {};
const actions = {};
// 創(chuàng)建實(shí)例
const vuexPersisted = new VuexPersistence({
	storage: window.sessionStorage,
  render:state=>({
  	userName:state.userName
    // 或
    ...state
  })
});

const store = new Vuex.Store({
	state,
  actions,
  mutations,
  // 數(shù)據(jù)持久化設(shè)置
  plugins:[vuexPersisted.plugins]
});

export default store;

屬性方法

屬性值 數(shù)據(jù)類型 描述
key string The key to store the state in the storage_Default: 'vuex'_
storage Storage (Web API) localStorage, sessionStorage, localforage or your custom Storage object.Must implement getItem, setItem, clear etc.Default: window.localStorage
saveState function(key, state[, storage]) If not using storage, this custom function handles saving state to persistence
reducer function(state) => object State reducer. reduces state to only those values you want to save. By default, saves entire state
filter function(mutation) => boolean Mutation filter. Look at mutation.type and return true for only those ones which you want a persistence write to be triggered for. Default returns true for all mutations
modules string[] List of modules you want to persist. (Do not write your own reducer if you want to use this)
asyncStorage boolean Denotes if the store uses Promises (like localforage) or not (you must set this to true when suing something like localforage)Default: false
supportCircular boolean Denotes if the state has any circular references to it self(state.x === state)Default: false

總結(jié)

上述兩種方案都可以實(shí)現(xiàn)vuex數(shù)據(jù)持久化存儲(chǔ)。方案一是我在實(shí)際開發(fā)過程中用到的,方案二是在Github上看到的,綜合來說,兩者都可以時(shí)間最終的需求,而且都有對(duì)應(yīng)的案例Demo可以參考。相比來說方案一在GitHub上的start數(shù)要高于方案二。

請(qǐng)結(jié)合實(shí)際情況選擇符合自己的方案!

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

相關(guān)文章

  • vue之瀏覽器存儲(chǔ)方法封裝實(shí)例

    vue之瀏覽器存儲(chǔ)方法封裝實(shí)例

    下面小編就為大家分享一篇vue之瀏覽器存儲(chǔ)方法封裝實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue3源碼分析reactivity實(shí)現(xiàn)原理

    vue3源碼分析reactivity實(shí)現(xiàn)原理

    這篇文章主要為大家介紹了vue3源碼分析reactivity實(shí)現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Vue.js圖片滑動(dòng)驗(yàn)證的實(shí)現(xiàn)示例

    Vue.js圖片滑動(dòng)驗(yàn)證的實(shí)現(xiàn)示例

    為了防止有人惡意使用腳本進(jìn)行批量操作,會(huì)設(shè)置圖片滑動(dòng)驗(yàn)證,本文就介紹了Vue.js圖片滑動(dòng)驗(yàn)證的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-05-05
  • 深入淺出vue圖片路徑的實(shí)現(xiàn)

    深入淺出vue圖片路徑的實(shí)現(xiàn)

    這篇文章主要介紹了深入淺出vue圖片路徑的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解vue-cli腳手架build目錄中的dev-server.js配置文件

    詳解vue-cli腳手架build目錄中的dev-server.js配置文件

    這篇文章主要介紹了詳解vue-cli腳手架build目錄中的dev-server.js配置文件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue Element前端應(yīng)用開發(fā)之echarts圖表

    Vue Element前端應(yīng)用開發(fā)之echarts圖表

    在我們做應(yīng)用系統(tǒng)的時(shí)候,往往都會(huì)涉及圖表的展示,綜合的圖表展示能夠給客戶帶來視覺的享受和數(shù)據(jù)直觀體驗(yàn),同時(shí)也是增強(qiáng)客戶認(rèn)同感的舉措之一
    2021-05-05
  • Vue項(xiàng)目中Element UI組件未注冊(cè)的問題原因及解決方法

    Vue項(xiàng)目中Element UI組件未注冊(cè)的問題原因及解決方法

    在 Vue 項(xiàng)目中使用 Element UI 組件庫時(shí),開發(fā)者可能會(huì)遇到一些常見問題,例如組件未正確注冊(cè)導(dǎo)致的警告或錯(cuò)誤,本文將詳細(xì)探討這些問題的原因、解決方法,以及如何在需要時(shí)撤銷相關(guān)操作,需要的朋友可以參考下
    2025-01-01
  • 使用Vue逐步實(shí)現(xiàn)Watch屬性詳解

    使用Vue逐步實(shí)現(xiàn)Watch屬性詳解

    這篇文章主要介紹了使用Vue逐步實(shí)現(xiàn)Watch屬性詳解,watch對(duì)象中的value分別支持函數(shù)、數(shù)組、字符串、對(duì)象,較為常用的是函數(shù)的方式,當(dāng)想要觀察一個(gè)對(duì)象以及對(duì)象中的每一個(gè)屬性的變化時(shí),便會(huì)用到對(duì)象的方式
    2022-08-08
  • Vue引入Stylus知識(shí)點(diǎn)總結(jié)

    Vue引入Stylus知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給各位整理的是一篇關(guān)于Vue引入Stylus知識(shí)點(diǎn)總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-01-01
  • 詳解vue-cli3使用

    詳解vue-cli3使用

    這篇文章主要介紹了詳解vue/cli 3使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08

最新評(píng)論

宿迁市| 阜宁县| 乌拉特后旗| 开封县| 宜良县| 徐州市| 霍城县| 平舆县| 礼泉县| 寿光市| 长武县| 富蕴县| 亚东县| 股票| 逊克县| 乐陵市| 贡嘎县| 开远市| 浪卡子县| 太谷县| 新巴尔虎右旗| 景谷| 遂昌县| 安丘市| 苗栗市| 山东| 三江| 临城县| 马关县| 镇雄县| 特克斯县| 大港区| 汽车| 横峰县| 常山县| 桂林市| 南通市| 高清| 平陆县| 乐清市| 镇雄县|