UNPKG

vuex-local

Version:

Local state management within Vuex

50 lines (49 loc) 1.62 kB
import { localKey } from './utils'; export function mapLocalModule(vm, modulePath, module) { mapState(vm, module.state, modulePath); var moduleName = modulePath[modulePath.length - 1]; if (module.getters) { mapGetters(vm, module.getters, moduleName); } if (module.actions) { mapActions(vm, module.actions, moduleName); } if (module.mutations) { mapMutations(vm, module.mutations, moduleName); } } function getSubState(state, path) { return path.reduce(function (sub, key) { return sub[key]; }, state); } function mapState(vm, state, path) { Object.keys(state).forEach(function (key) { Object.defineProperty(vm, key, { enumerable: true, configurable: true, get: function () { return getSubState(vm.$store.state, path)[key]; } }); }); } function mapGetters(vm, getters, moduleName) { Object.keys(getters).forEach(function (key) { Object.defineProperty(vm, key, { enumerable: true, configurable: true, get: function () { return vm.$store.getters[localKey(key, moduleName)]; } }); }); } function mapActions(vm, actions, moduleName) { Object.keys(actions).forEach(function (key) { vm[key] = function (payload) { return vm.$store.dispatch(localKey(key, moduleName), payload); }; }); } function mapMutations(vm, mutations, moduleName) { Object.keys(mutations).forEach(function (key) { vm[key] = function (payload) { vm.$store.commit(localKey(key, moduleName), payload); }; }); }