Browse Source

🎨 优化store结构

晓晓晓晓丶vv 4 years ago
parent
commit
cda30f3bc1

+ 3 - 3
src/router/permission.ts

@@ -6,7 +6,7 @@ import store from "@/store";
 import Layout from "@/layout/index.vue";
 
 import { RouteConfig } from "@/types/route";
-import { ActionType } from "@/store/modules/app/actions";
+import { ActionType } from "@/store/modules/app/_type";
 
 const WHITE_URL_LIST: string[] = ["/login", "/forget"];
 
@@ -41,10 +41,10 @@ router.beforeEach(
       if (roles.length) next();
       else {
         const userRoles: string[] = await store.dispatch(
-          ActionType.GET_USER_ROLES
+          ActionType.getUserRoles
         );
         const webRoutes: RouteConfig[] = await store.dispatch(
-          ActionType.INIT_ROUTES,
+          ActionType.generatorRoutes,
           userRoles
         );
         const AppRoute: RouteConfig = {

+ 19 - 7
src/store/modules/app/_type.ts

@@ -1,33 +1,45 @@
-import { ActionType } from "./actions";
-import { MutationType } from "./mutations";
 import { AugmentedActionContext } from "./_module";
 import { RouteConfig } from "@/types/route";
 import { RouteRecordRaw } from "vue-router";
 
+// state 定义
 type State = {
   roles: string[];
   routes: RouteConfig[];
   addRoutes: RouteConfig[];
 };
 
+// mutation 定义
+enum MutationType {
+  setRoles = "setRoles",
+  setRoutes = "setRoutes",
+}
+
 type Mutations<S = State> = {
-  [MutationType.SET_ROLES](state: S, roles: string[]): void;
-  [MutationType.SET_ROUTES](state: S, routes: RouteConfig[]): void;
+  [MutationType.setRoles](state: S, roles: string[]): void;
+  [MutationType.setRoutes](state: S, routes: RouteConfig[]): void;
 };
 
+// action 定义
+enum ActionType {
+  generatorRoutes = "generatorRoutes",
+  getUserRoles = "getUserRoles",
+}
+
 type Actions = {
-  [ActionType.INIT_ROUTES](
+  [ActionType.generatorRoutes](
     { commit }: AugmentedActionContext,
     roles: string[]
   ): Promise<RouteConfig[]>;
-  [ActionType.GET_USER_ROLES]({
+  [ActionType.getUserRoles]({
     commit,
   }: AugmentedActionContext): Promise<string[]>;
 };
 
+// getter 定义
 type Getters = {
   permissionRoutes(state: State): RouteRecordRaw[];
   userRoles(state: State): string[];
 };
 
-export { State, Mutations, Actions, Getters };
+export { State, Mutations, MutationType, Actions, ActionType, Getters };

+ 5 - 11
src/store/modules/app/actions.ts

@@ -1,29 +1,23 @@
 import { ActionTree } from "vuex";
-import { Actions, State } from "./_type";
-import { MutationType } from "./mutations";
+import { Actions, ActionType, MutationType, State } from "./_type";
 import { RootState } from "@/store";
 import asyncRoutes from "@/router/async";
 import { filterRoutesByRoles } from "@/helper/permission";
 
-export enum ActionType {
-  INIT_ROUTES = "generatorRoutes",
-  GET_USER_ROLES = "getUserRoles",
-}
-
 const actions: ActionTree<State, RootState> & Actions = {
-  [ActionType.INIT_ROUTES]({ commit }, roles) {
+  [ActionType.generatorRoutes]({ commit }, roles) {
     return new Promise(async (resolve) => {
       let resultRoutes;
       if (roles.includes("admin")) resultRoutes = asyncRoutes || [];
       else resultRoutes = filterRoutesByRoles(asyncRoutes, roles) || [];
-      await commit(MutationType.SET_ROUTES, resultRoutes);
+      await commit(MutationType.setRoutes, resultRoutes);
       resolve(resultRoutes);
     });
   },
-  [ActionType.GET_USER_ROLES]({ commit }) {
+  [ActionType.getUserRoles]({ commit }) {
     return new Promise(async (resolve) => {
       const roles = ["admin"];
-      await commit(MutationType.SET_ROLES, roles);
+      await commit(MutationType.setRoles, roles);
       resolve(roles);
     });
   },

+ 3 - 8
src/store/modules/app/mutations.ts

@@ -1,16 +1,11 @@
 import { MutationTree } from "vuex";
-import { State, Mutations } from "./_type";
-
-export enum MutationType {
-  SET_ROLES = "setRoles",
-  SET_ROUTES = "setRoutes",
-}
+import { State, Mutations, MutationType } from "./_type";
 
 const mutations: MutationTree<State> & Mutations = {
-  [MutationType.SET_ROLES](state, roles) {
+  [MutationType.setRoles](state, roles) {
     state.roles = roles;
   },
-  [MutationType.SET_ROUTES](state, routes) {
+  [MutationType.setRoutes](state, routes) {
     state.routes = routes;
   },
 };