React-Router v6 useNavigate 非组件不生效

1. 官方文档&中文文档

React Router 官方文档

React Router 中文文档

2. 相关技术文档

升react-router v6后react-router-config不能用了

如何通过react-router-dom优雅的实现菜单权限和登陆拦截功能

如何优雅的使用react-router v6实现全局守卫

3. FAQ

3.1 react-router-dom useNavigate 在非组件不生效

How to use router inside axios interceptors. React and Vue

ts 复制代码
// src/router/globalRouter.ts
import { NavigateFunction } from "react-router-dom";

const globalRouter = { navigate: null } as {
  navigate: null | NavigateFunction;
};

export default globalRouter;
ts 复制代码
// src/main.tsx
import { Route, Routes, useNavigate } from "react-router-dom";
import globalRouter from "./globalRouter";

function App() {
  const navigate = useNavigate();
  globalRouter.navigate = navigate;
}

export default App;
ts 复制代码
// src/utils/request.ts
import globalRouter from "@/utils/globalRouter";
import axios from "axios";

const customAxios = axios.create();

customAxios.interceptors.response.use(
  function (response) {
    return response;
  },
  function (error) {
    if (error.response.status == 401 && globalRouter.navigate) {
      globalRouter.navigate("/login");
    }
    return Promise.reject(error);
  }
);

export default customAxios;
相关推荐
Jonathan Star3 分钟前
前端需要做单元测试吗?哪些适合做?
前端·单元测试·状态模式
eason_fan24 分钟前
解决 Monorepo 项目中 node-sass 安装失败的 Python 版本兼容性问题
前端·debug
q***735524 分钟前
删除文件夹,被提示“需要来自 TrustedInstaller 的权限。。。”的解决方案
android·前端·后端
小满zs28 分钟前
Next.js第八章(路由处理程序)
前端
半桶水专家28 分钟前
ES Module 原理详解
前端·javascript
冴羽32 分钟前
Cloudflare 崩溃梗图
前端·javascript·vue.js
鹿衔`2 小时前
解决Flink on Yarn模式多Yarn Session会话提交
java·前端·flink
u***u6852 小时前
前端组件单元测试模拟,Jest mock函数
前端·单元测试
前端摸鱼匠2 小时前
Vue 3 的watchEffect函数:介绍watchEffect的基本用法和特点
前端·javascript·vue.js·前端框架·ecmascript
拉不动的猪2 小时前
基本数据类型Symbol的基本应用场景
前端·javascript·面试