Сохранение данных Vuex — vuex-persistedstate (для решения проблемы потери данных при обновлении страницы)

Данные, которые мы храним в vuex, помещаются только в кеш браузера и будут потеряны при обновлении страницы.
Конечно, его также можно сохранить локально через vuex, а затем извлечь и понять, что данные обновления страницы не будут потеряны.
В этой статье в основном объясняется плагин vuex-persistedstate, принцип тот же, что и выше, за исключением того, что нет необходимости писать сохраненный код вручную, его можно реализовать в соответствии с простой конфигурацией.

1. Скачать

npm установить vuex-persistedstate --save

2. Использовать - импортировать и настраивать плагины в index.js в папке магазина

По требованиям проекта может быть сконфигурирован по модулям, а может быть сконфигурирован без модулей

1. Независимо от модуля

Просто настройте его прямо в stroe/index.js.在这里插入代码片

import Vuex from "vuex";
import Vue from 'vue'
// 引入插件
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;

2. Подмодуль

В модуле напишите это:

export default ({
    
    
    state: {
    
    },
    mutations: {
    
    },
    actions: {
    
    }
})

Конфигурация в stroe/index.js выглядит следующим образом:

import Vuex from "vuex";
import Vue from 'vue'
// 引入模块
import fanSystem from './modules/fanSystem'


// 引入插件
import createPersistedState from "vuex-persistedstate";
Vue.use(Vuex);

const getters = {
    
    }

const store = new Vuex.Store({
    
    
  // 有哪些模块
  modules: {
    
    
    fanSystem
  },
  getters,
  /* vuex数据持久化配置 */
  // plugins: [createPersistedState()],//没有任何参数的配置写法
  plugins: [
    createPersistedState({
    
     //带参数的写法
      // 存储方式:localStorage、sessionStorage、cookies
      storage: window.sessionStorage,
      // 存储的 key 的key值(如果不写默认是vuex)
      key: "store",
      paths: ['fanSystem', ] //要存的数据模块,如果不配置,默认所有模块的数据都保存
    })
  ]
});

export default store;

После того, как модуль разделен, мы вызываем методы в мутациях и действиях без изменений.

this.$store.commit[方法名] // mutations
this.$store.dispath[方法名] // actions

При выборке данных в состоянии их необходимо получить по модулю.

this.$store.state[模块名][数据名]

Таким образом, мы его настроили, и нам не нужно самим писать метод хранения.

Supongo que te gusta

Origin blog.csdn.net/pink_cz/article/details/126272569
Recomendado
Clasificación