Сохранение только одного модуля с помощью vuex-persistedstate - PullRequest
1 голос
/ 24 марта 2019

Мне нужно использовать vuex-persistedstate, чтобы только один из моих модулей сохранял состояние при обновлении страницы.

Прямо сейчас, это не работает, когда я использую plugins: [createPersistedState()] только внутри модуля user.

plugins: [createPersistedState()] работает только тогда, когда я использую его внутри index.js магазина, но это делает все модули постоянными, а это не то, что мне нужно.

Пожалуйста, есть ли способ настроить vuex-persistedstate на работу только с одним модулем?

index.js

//import createPersistedState from 'vuex-persistedstate'
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import workout from './modules/workout'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {

  },
  getters: {

  },
  mutations: {

  },
  actions: {

  },
  modules: {
    user,
    workout
  },
  //This makes all store modules persist through page refresh
  //plugins: [createPersistedState()]
})
user.js

import { USER } from '../mutation-types'
import createPersistedState from 'vuex-persistedstate'

export default {
    namespaced: true,

    state: {
        darkMode: true
    },

    getters: {
        getDarkMode: state => () => state.darkMode
    },

    actions: {
        toggleDarkMode: ({commit}) => commit(USER.TOGGLE_DARKMODE)
    }

    mutations: {
        [USER.TOGGLE_DARKMODE]: (state) => state.darkMode = !state.darkMode
    },
    //This doesn't work
    plugins: [createPersistedState()]
}

1 Ответ

2 голосов
/ 24 марта 2019

Глядя на API документы , вам необходимо настроить плагин так, чтобы он сохранял только определенное подмножество хранилища.

export default new Vuex.Store({
  // ...
  plugins: [
    createPersistedState({
      paths: ['user'],
    }),
  ],
});

Из документов выше:

paths <Array>: Массив любых путей для частичного сохранения состояния. Если пути не указаны, полное состояние сохраняется. Пути должны быть указаны с использованием точечной нотации. Если вы используете модули, укажите название модуля. например: "auth.user" (по умолчанию: [])

...