动态菜单和动态路由的 antd pro

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // import { query as queryUsers, queryCurrent } from '../services/user';
  2. import { query as queryUsers, queryCurrent, queryMenus } from '../services/user';
  3. import {getMenuData} from "../common/menu";
  4. export default {
  5. namespace: 'user',
  6. state: {
  7. list: [],
  8. currentUser: {},
  9. menuData: [],
  10. },
  11. effects: {
  12. *fetch(_, { call, put }) {
  13. const response = yield call(queryUsers);
  14. yield put({
  15. type: 'save',
  16. payload: response,
  17. });
  18. },
  19. *fetchCurrent(_, { call, put }) {
  20. const response = yield call(queryCurrent);
  21. yield put({
  22. type: 'saveCurrentUser',
  23. payload: response,
  24. });
  25. },
  26. *fetchMenus(_, { call, put }) {
  27. const response = yield call(queryMenus);
  28. const menus = getMenuData(response)
  29. yield put({
  30. type: 'saveMenus',
  31. payload: menus,
  32. });
  33. },
  34. },
  35. reducers: {
  36. save(state, action) {
  37. return {
  38. ...state,
  39. list: action.payload,
  40. };
  41. },
  42. saveCurrentUser(state, action) {
  43. return {
  44. ...state,
  45. currentUser: action.payload,
  46. };
  47. },
  48. changeNotifyCount(state, action) {
  49. return {
  50. ...state,
  51. currentUser: {
  52. ...state.currentUser,
  53. notifyCount: action.payload,
  54. },
  55. };
  56. },
  57. saveMenus(state, action) {
  58. return {
  59. ...state,
  60. menuData: action.payload,
  61. };
  62. },
  63. },
  64. };