当前位置: 首页 > news >正文

(一)React企业级后台(Axios/localstorage封装/动态侧边栏)


文章目录

  • 项目地址
  • 一、Axios和Localstorage封装
    • 1.1 Axios封装
      • 1.1 基础请求头
      • 1.2 后端返回结果和错误封装
      • 1.3 requests的封装
      • 1.4 response的封装
      • 1.5 发起请求
    • 1.2 LoacalStorage封装
      • 1. 增删改查获取localstorage
    • 1.3 配置
      • 1.1 配置开发/生产环境
      • 1.2 使用环境变量
  • 二、页面
    • 2.1 登录页面
      • 1. 登录所需要的请求
      • 2. 发起登录的方法
      • 3. 登录页面
    • 2.2 动态侧边栏(重点)
      • 1. zustand存储用户状态和菜单
      • 2. 登录后获取菜单(token和权限分离)
        • 补充:RBAC毫秒生效
      • 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; // 业务状态码:200成功,401未授权,403权限不足等data: T;      // 业务数据message: string; // 提示信息requestId?: string; // 请求唯一标识(用于问题排查)
}
  • 错误请求的封装,如果后端已经将错误信息进行了统一处理,就不需要
    在这里插入图片描述

1.3 requests的封装

  • 请求的拦截器,添加jwt token,多租户的tenantId,以及traceID
    在这里插入图片描述

1.4 response的封装

  • 开发环境的traceID关联
  • 业务状态码处理
  // 响应拦截器:关联traceIdinstance.interceptors.response.use((response: AxiosResponse<BaseResponse>) => {const { config, data } = response;const { url, method } = config;const traceId = 
http://www.dtcms.com/a/335631.html

相关文章:

  • 【React 性能】性能优化第一课:搞懂 `React.memo`, `useCallback`, `useMemo`
  • 重学React(六):脱围机制二
  • Spark03-RDD02-常用的Action算子
  • WebSocket DevTools 开发调试工具完全指南 – 实时监控、消息拦截、性能分析一站式解决方案
  • 【Java后端】Spring Boot 集成 MyBatis 全攻略
  • 遥感数字图像处理教程——第二章部分课后习题
  • Java零基础笔记20(Java高级技术:单元测试、反射、注解、动态代理)
  • Oracle Undo Tablespace 使用率暴涨案例分析
  • 前端vue3+后端spring boot导出数据
  • 《香农之息》(终章·镜渊)
  • 从零到一:打包并发布你的第一个MCP AI工具服务
  • Qt | 四种方式实现多线程导出数据功能
  • RAG学习(二)
  • 零墨云A4mini打印机设置电脑通过局域网络进行打印
  • scikit-learn/sklearn学习|多任务套索回归MultiTaskLasso解读
  • 如何利用gemini-cli快速了解一个项目以及学习新的组件?
  • 业务员手机报价软件免费领取——仙盟创梦IDE
  • Kotlin集合概述
  • 【LeetCode】13. 罗马数字转整数
  • 不止于“渲染图”:从Adobe Stager到Three.js的交互式Web3D工作流
  • 安卓开发者自学鸿蒙开发4自定义组件
  • C#中List、Path、字符串操作等常用方法总结
  • fdisk的格式化分区和挂载(linux)
  • Collections.synchronizedList是如何将List变为线程安全的
  • 解决 OpenWrt 编译时报 toolchain/* failed to build 的错误
  • RK3588开发板Ubuntu系统烧录
  • Matlab课程实践——基于MATLAB设计的计算器软件(简单、科学、电工、矩阵及贷款计算)
  • Leetcode 15 java
  • 如何打造自己的工作室,实现快速开发
  • linux中已经启用的命令和替代命令