types.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // 定义状态
  2. export type State = {
  3. routerMatchList: {
  4. path: string,
  5. menuLevel: number,
  6. breadcrumbName: string,
  7. }[],
  8. userName: string,
  9. collapsed: boolean,
  10. selectedKey: string,
  11. openKeys: string[],
  12. };
  13. // 只读状态
  14. export type ReadonlyState = Readonly<State>;
  15. // 修改状态
  16. export type StateAction = {
  17. setRouterMatchList: (list: State['routerMatchList']) => void,
  18. setUserName: (userName: string) => void,
  19. setCollapsed: (status: boolean) => void,
  20. setSelectedKey: (key: string) => void,
  21. setOpenKeys: (openKeys: string[]) => void,
  22. };
  23. // 仓库类型
  24. export type LayoutStore = {
  25. state: ReadonlyState,
  26. onClickLogout: () => Promise<any>,
  27. onChangeSelectedKey: (path: string, menuLevel: number) => void,
  28. onOpenChange: (openKeys: string[]) => void,
  29. onClickCollapsed: () => void,
  30. init: (list: State['routerMatchList']) => void,
  31. reset: () => void,
  32. };
  33. /* 组件类型 */
  34. export type HeaderProps = {
  35. userName: string,
  36. onClickLogout: () => Promise<any>,
  37. };
  38. export type NavProps = {
  39. selectedKey: string,
  40. onChangeSelectedKey: (path: string, menuLevel: number) => void,
  41. openKeys: string[],
  42. onOpenChange: (openKeys: string[]) => void,
  43. collapsed: boolean,
  44. onClickCollapsed: () => void,
  45. };
  46. export type BreadcrumbProps = {
  47. routerMatchList: State['routerMatchList'],
  48. };