You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router Dom v6路由跳转路径重复追加拼接问题排查

路由路径拼接问题修复方案

核心错误原因

<Link>组件的to属性未使用绝对路径写法。React Router 中,不带前导斜杠/的路径会被识别为当前路由的相对子路径,跳转时直接拼接在当前路径末尾,才会出现/login/register这类异常地址。

代码中存在的所有问题

  • 所有页面的跳转链接路径缺少根路径前缀:Home.js、Login.js、Register.js里的to="login"、to="register"都是相对路径写法,全部要改成带前导斜杠的绝对路径to="/login"、to="/register",从站点根目录开始匹配路由,就不会出现路径拼接问题。
  • App.js存在无效导入:React Router v6 版本已经移除Switch组件,路由容器统一使用Routes,导入Switch属于无效代码,还可能引发控制台报错。
  • App.js根路由多余配置:React Router v6 默认采用精确路由匹配规则,不需要给根路由加exact属性。
  • 三个页面组件存在无效导入:Home.js、Login.js、Register.js里导入的Router组件没有被任何代码使用,属于冗余导入,可以直接删除。

修复示例

修正后的Link写法(所有页面通用)

{/* Home.js */}
<li>
  <Link to="/login">Login</Link>
</li>
<li>
  <Link to="/register">Register</Link>
</li>

{/* Login.js */}
<li>
  <Link to="/register">Register</Link>
</li>

{/* Register.js */}
<li>
  <Link to="/login">Login</Link>
</li>

修正后的App.js代码

import "./App.scss";
// 移除多余的Switch导入
import { Routes, Route } from "react-router-dom";

import Home from "./components/Home/Home";
import Login from "./components/Login/Login";
import Register from "./components/Register/Register";

function App() {
  return (
    <Routes>
      {/* 移除多余的exact属性 */}
      <Route path="/" element={<Home />} />
      <Route path="/login" element={<Login />} />
      <Route path="/register" element={<Register />} />
    </Routes>
  );
}

export default App;

修正后的页面组件导入部分(三个页面通用)

import React from "react";
// 移除多余的Router导入
import { Link } from "react-router-dom";

内容的提问来源于stack exchange,提问作者hiimwillow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:36:23