91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vuex數據持久化如何實現

發布時間:2022-10-13 11:40:48 來源:億速云 閱讀:195 作者:iii 欄目:開發技術

這篇“vuex數據持久化如何實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vuex數據持久化如何實現”文章吧。

業務需求:

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

為解決頁面刷新后vuex中存儲的數據狀態不能持久化的問題,我采取的方案是借助第三方插件工具來實現vuex數據的持久化存儲,來解決頁面刷新后數據更新的問題。

方案一: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數據持久化配置 */
	plugins: [
		createPersistedState({
      // 存儲方式:localStorage、sessionStorage、cookies
			storage: window.sessionStorage,
      // 存儲的 key 的key值
			key: "store",
			render(state) {
        // 要存儲的數據:本項目采用es6擴展運算符的方式存儲了state中所有的數據
				return { ...state };
			}
		})
	]
});

export default store;

vuex中module數據的持久化存儲

/* 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]
});

注意事項:

  1. storage為存儲方式,可選值為localStorage、sessionStorage和cookies;

  2. localStorage和sessionStorage兩種存儲方式可以采用上述代碼中的寫法,若想采用cookies坐位數據存儲方式,則需要另外一種寫法;

  3. render接收一個函數,返回值為一個對象;返回的對象中的鍵值對既是要持久化存儲的數據;

  4. 若想持久化存儲部分數據,請在return的對象中采用key:value鍵值對的方式進行數據存儲,render函數中的參數既為state對象。

方案二: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 = {};
// 創建實例
const vuexPersisted = new VuexPersistence({
	storage: window.sessionStorage,
  render:state=>({
  	userName:state.userName
    // 或
    ...state
  })
});

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

export default store;

屬性方法

屬性值數據類型描述
keystringThe key to store the state in the storage_Default: "vuex"_
storageStorage (Web API)localStorage, sessionStorage, localforage or your custom Storage object.Must implement getItem, setItem, clear etc.Default: window.localStorage
saveStatefunction(key, state[, storage])If not using storage, this custom function handles saving state to persistence
reducerfunction(state) => objectState reducer. reduces state to only those values you want to save. By default, saves entire state
filterfunction(mutation) => booleanMutation 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
modulesstring[]List of modules you want to persist. (Do not write your own reducer if you want to use this)
asyncStoragebooleanDenotes if the store uses Promises (like localforage) or not (you must set this to true when suing something like localforage)Default: false
supportCircularbooleanDenotes if the state has any circular references to it self(state.x === state)Default: false

以上就是關于“vuex數據持久化如何實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

年辖:市辖区| 海城市| 上蔡县| 沙田区| 三台县| 渭源县| 兴海县| 遵化市| 体育| 双柏县| 南岸区| 肥东县| 天祝| 哈密市| 松滋市| 乐昌市| 包头市| 南川市| 阿城市| 永福县| 南丰县| 康马县| 垣曲县| 渝中区| 大城县| 吉林市| 洪洞县| 阿拉善右旗| 玉林市| 邻水| 江北区| 赤水市| 仙桃市| 宝丰县| 庄河市| 吴江市| 广丰县| 东乌珠穆沁旗| 乐业县| 泸西县| 岗巴县|