1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| import { computed } from "vue"; import { mapGetters, mapMutations, mapState, useStore, createNamespacedHelpers, mapActions, } from "vuex";
const useMapper = ( mapper: Array<any> | Object, mapFn: Function, iscomputed: boolean = true ) => { const store = useStore(); const storeStateFns = mapFn(mapper); const storeState: any = {}; Object.keys(storeStateFns).forEach((keyFn) => { const fn = storeStateFns[keyFn].bind({ $store: store }); storeState[keyFn] = iscomputed ? computed(fn) : fn; }); return storeState; };
export const useState = (mapper: Array<any> | Object) => { return useMapper(mapper, mapState); };
export const useMutation = (mapper: Array<any> | Object) => { return useMapper(mapper, mapMutations, false); };
export const useAction = (mapper: Array<any> | Object) => { return useMapper(mapper, mapActions, false); };
export const useGetters = (mapper: Array<any> | Object) => { return useMapper(mapper, mapGetters); };
export const useModuleState = ( moduleName: string, mapper: Array<any> | Object ) => { let mapperFn = mapState; if (typeof moduleName === "string" && moduleName.length > 0) { mapperFn = createNamespacedHelpers(moduleName).mapState; } else { mapper = moduleName; } return useMapper(mapper, mapperFn); };
export const useModuleGetters = ( moduleName: string, mapper: Array<any> | Object ) => { let mapperFn = mapGetters; if (typeof moduleName === "string" && moduleName.length > 0) { mapperFn = createNamespacedHelpers(moduleName).mapGetters; } else { mapper = moduleName; } return useMapper(mapper, mapperFn); };
|