42 lines
932 B
JavaScript
42 lines
932 B
JavaScript
import Vue from 'vue'
|
|
import Vuex from 'vuex'
|
|
import getters from './getters'
|
|
Vue.use(Vuex)
|
|
const modulesFiles = require.context('./modules', true, /\.js$/)
|
|
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
|
|
const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
|
|
const value = modulesFiles(modulePath)
|
|
modules[moduleName] = value.default
|
|
return modules
|
|
}, {})
|
|
|
|
const store = new Vuex.Store({
|
|
modules,
|
|
getters,
|
|
})
|
|
|
|
// Vue.prototype.$state = store.state
|
|
|
|
/**
|
|
* 原vuex
|
|
* 取值 this.$store.state.xxx
|
|
* 设值 this.$store.commit('beichen/setState', { state, value })
|
|
*
|
|
* 下面则
|
|
* 取值 this.$state.xxx
|
|
* 设值 this.$state.xxx = xxx
|
|
* */
|
|
Vue.prototype.$state = new Proxy(
|
|
{},
|
|
{
|
|
get(target, state) {
|
|
return store.state[state]
|
|
},
|
|
set(target, state, value) {
|
|
store.commit('app/setState', { state, value })
|
|
return true
|
|
}
|
|
}
|
|
)
|
|
|
|
export default store |