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