import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 首先声明一个需要全局维护的状态 state,比如 我这里举例的resturantName
// https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', false, /\.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,
state: {
loading: false
}, // 共同维护的一个状态,state里面可以是很多个全局状态
getters: {
AsyncLoading(state) {
return state.loading
}
}, // 获取数据并渲染
actions: {
}, // 数据的异步操作
mutations: {
staetLoading(state) {
state.loading = true
},
endLoading(state) {
state.loading = false
}
} // 处理数据的唯一途径,state的改变或赋值只能在这里
})
export default store // 导出store并在 main.js中引用注册。