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

React路由重定向传参问题:为何该Route配置不生效?

React路由重定向传递id参数失效原因及解决方法

失效原因

原配置存在两个关键问题:

  • Redirect组件在React Router v6版本中已被弃用,官方推荐使用Navigate组件替代。
  • 即使忽略版本差异,to="/game/live/:id"中的:id是字面量字符串,路由系统不会自动将其解析为当前URL中的实际id参数值,最终跳转后的URL会变成/game/live/:id,而非预期的/game/live/1234。

正确实现方案(基于React Router v6)

方法1:封装跳转组件获取参数

创建一个负责重定向的组件,通过useParams钩子拿到当前路由的id,再拼接目标URL:

import { Navigate, useParams } from 'react-router-dom';

const PrepareToLiveRedirect = () => {
  const { id } = useParams();
  // replace属性用于替换历史记录,避免返回时回到重定向页面
  return <Navigate to={`/game/live/${id}`} replace />;
};

// 路由配置
<Route path="/game/prepare/:id" element={<PrepareToLiveRedirect />} />

方法2:直接在路由中使用函数式element(v6.4+)

如果使用React Router v6.4+的createBrowserRouter等数据路由方案,可以直接在路由配置中通过params获取参数:

import { Navigate, createBrowserRouter } from 'react-router-dom';

const router = createBrowserRouter([
  {
    path: '/game/prepare/:id',
    element: ({ params }) => <Navigate to={`/game/live/${params.id}`} replace />,
  },
  // 其他路由配置...
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:20:43