文章目录
- 项目地址
- 一、Axios和Localstorage封装
-
- 1.1 Axios封装
-
- 1.1 基础请求头
- 1.2 后端返回结果和错误封装
- 1.3 requests的封装
- 1.4 response的封装
- 1.5 发起请求
- 1.2 LoacalStorage封装
-
- 1.3 配置
-
- 二、页面
-
- 2.1 登录页面
-
- 1. 登录所需要的请求
- 2. 发起登录的方法
- 3. 登录页面
- 2.2 动态侧边栏(重点)
-
- 1. zustand存储用户状态和菜单
- 2. 登录后获取菜单(token和权限分离)
-
- 3. 根据返回值动态生成菜单
- 2.3 增加部门模态框(重点)
-
- 1. 父控子的弹窗
- 2. 子类使用useImperativeHandle
- 3. 删除二次确认
项目地址
dbt
airflow
一、Axios和Localstorage封装
1.1 Axios封装
1.1 基础请求头
- 基础请求头只有最简单的头部,之后可以根据需求在RequestConfig里添加

1.2 后端返回结果和错误封装
export interface BaseResponse<T = any> {code: number; data: T; message: string; requestId?: string;
}
- 错误请求的封装,如果后端已经将错误信息进行了统一处理,就不需要

1.3 requests的封装
- 请求的拦截器,添加jwt token,多租户的tenantId,以及traceID

1.4 response的封装
instance.interceptors.response.use((response: AxiosResponse<BaseResponse>) => {const { config, data } = response;const { url, method } = config;const traceId =