#javascript #vue.js #vuex #store #vuex-modules
#javascript #vue.js #vuex #Магазин #vuex-модули
Вопрос:
Мне нужно использовать 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:
Просматривая документы API, вам нужно будет настроить плагин для сохранения только определенного подмножества хранилища.
export default new Vuex.Store({
plugins: [
createPersistedState({
paths: ['user'],
}),
],
});
Из документов выше:
paths <Array>
: Массив любых путей для частичного сохранения состояния. Если пути не указаны, сохраняется полное состояние. Пути должны быть указаны с использованием точечной нотации. При использовании модулей укажите имя модуля. например: «auth.user» (по умолчанию:[]
)
Комментарии:
1. но в nux есть функция горячей перезагрузки, которая выполняет весь импорт модуля.nuxt/store.js это автоматически переводит все ваши модули в состояние сохранения
2. у меня это работает в приложении nuxt экспорт по умолчанию ({ store }) => { createPersistedState({ пути: [‘auth-module’], хранилище: window.sessionStorage, })(store) }