React 在非组件环境切换路由

我的react-router-dom版本是6.16.0。之前在react中是这样配置路由的

App.jsx

javascript 复制代码
import ReactDOM from 'react-dom/client';
import { HashRouter, Route, Routes } from 'react-router-dom';

const root = ReactDOM.createRoot(document.getElementById("app"));
root.render(
    <HashRouter>
       <Routes>
     	   <Route
          	  path={XXX}
          	  element={<Component></Component>}
          	  key={XXX} /> 
       </Routes>
    </HashRouter>
);

然后使用axios做接口拦截,当接口的是响应码是10000的时候,跳转到登录页面(10000表示接口返回token过期),但是像上面这样使用路由,该怎么在组件外面(例如axios的逻辑中)做路由跳转呢。

目前看这种方法好像无法做跳转。

可以使用下面的方式做

router/index.jsx

javascript 复制代码
import { createHashRouter } from "react-router-dom";

export const router = createHashRouter([
  {
    path: "/",
    element: <Component />,
  },
]);

App.jsx

javascript 复制代码
import React, { useEffect } from "react";
import { RouterProvider, createHashRouter } from "react-router-dom";
import { router } from "@/router";

export default () => {
  return (
    <RouterProvider router={router} />
  );
};

然后如果组件外面想切换路由:

就类似这样:

javascript 复制代码
import { router } from "@/router";

router.navigate('/login');
相关推荐
阿珊和她的猫4 分钟前
深入理解 React 中的 Render Props 模式
前端·react.js·状态模式
森叶16 分钟前
Cookie 和 Token 的应用场景优势比较 & Cookie 不能使用的场景补充
javascript
IT_陈寒16 分钟前
SpringBoot 3.0实战:10个高效开发技巧让你的启动时间减少50%
前端·人工智能·后端
im_AMBER19 分钟前
前端 + agent 开发学习路线
前端·学习·agent
亿坊电商26 分钟前
利于SEO优化的CMS系统都有哪些特点?
前端·数据库
lili-felicity30 分钟前
React Native 鸿蒙跨平台开发:纯原生IndexBar索引栏 零依赖 快速定位列表
react native·react.js·harmonyos
juejin_cn43 分钟前
使用 Codex SDK 轻松实现文字控制电脑
前端
CUYG43 分钟前
Moment.js常用
前端
用户812748281512044 分钟前
漏学Input知识系列之“偷”走了其他窗口的事件pilferPointers
前端
用户812748281512044 分钟前
安卓14自由窗口圆角处理之绘制圆角轮廓线
前端