skyeyesystem/frontend/Skyeye-sys-ui/src/store/index.js

45 lines
1.2 KiB
JavaScript
Raw Normal View History

2026-01-25 16:02:00 +08:00
import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import createPersistedState from 'vuex-persistedstate'
Vue.use(Vuex)
// https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', true, /\.js$/)
// you do not need `import app from './modules/app'`
// it will auto require all vuex module from modules file
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
// set './app.js' => 'app'
const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
const value = modulesFiles(modulePath)
modules[moduleName] = value.default
return modules
}, {})
const store = new Vuex.Store({
modules,
getters,
actions: {
load(context) {
return this.dispatch("loadUser").then(() => {
const promises = [];
return Promise.all(promises);
})
},
unload(context) {
context.commit("clear");
}
},
plugins: [
createPersistedState({
key: 'vuex',
// 存储数据中的哪些数据(如果是模块下具体的数据需要加上模块名称,如 user.token
paths: ['user.userId', 'user.username']
})
]
})
export default store