import Vuex, { Store } from 'vuex' import Vue from 'vue' import getters from './getters' import appState from './modules/app' import dictionary, { IDictionaryState } from './modules/dictionary' import loadingCtrl from './modules/loading' import menuState, { MenuInfoState } from './modules/menu' import notify, { INotifyState } from './modules/notify' import reuseTabState from './modules/router-tabs' import setting, { ISettingState } from './modules/setting' import userState from './modules/user' Vue.use(Vuex) export interface RootState { app?: any user?: any menu?: MenuInfoState reuseTab?: any loadingCtrl?: any dictionary?: IDictionaryState notify?: INotifyState setting?: ISettingState } const store = new Store({ state: {}, mutations: {}, actions: {}, getters, modules: { app: appState, user: userState, menu: menuState, reuseTab: reuseTabState, loadingCtrl, dictionary, notify, setting, }, }) // 热重载 if (module.hot) { module.hot.accept( [ './modules/app', './modules/user', './modules/router-tabs', './modules/dictionary', './modules/notify', './modules/setting', ], () => { store.hotUpdate({ modules: { app: require('./modules/app'), user: require('./modules/user'), menu: require('./modules/menu'), loadingCtrl: require('./modules/loading'), routerTabs: require('./modules/router-tabs'), dictionary: require('./modules/dictionary'), notify: require('./modules/notify'), setting: require('./modules/setting'), }, }) }, ) } export default store