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

React中使用navigate跳转动态路由失效,点击Card无法渲染对应User组件

问题排查与解决方案
  • 跳转路径写法错误
    当前页面处于/dashboard/students路由下,你使用的navigate(students/${elem.id})是相对路径写法,会直接在当前路由后拼接路径,最终生成的跳转地址为/dashboard/students/students/xxx,和你配置的/dashboard/students/:id路由规则不匹配,导致跳转失败。
    修改方案二选一即可:
// 方案1:使用绝对路径,路径匹配更稳妥
navigate(`/dashboard/students/${elem.id}`, { replace: true })
// 方案2:使用标准相对路径,./表示基于当前路由层级拼接
navigate(`./${elem.id}`, { replace: true })
  • 父路由组件缺少子路由渲染出口
    你为students路由配置了子路由:id,但students路由对应的StudentsCards组件如果没有引入并渲染react-router-dom提供的<Outlet />组件,子路由对应的User组件没有挂载入口,即使路径跳转成功也不会显示对应内容。
    修改方案:在StudentsCards组件的合适位置新增<Outlet />作为子路由渲染占位:
import { Outlet } from 'react-router-dom'

function StudentsCards() {
  // 原有业务逻辑
  return (
    <div>
      {/* 原有卡片列表渲染代码 */}
      <CardComponent />
      {/* 新增子路由出口 */}
      <Outlet />
    </div>
  )
}
  • 可选优化项
    列表渲染时的key属性不要使用data.indexOf(elem),直接用遍历项的唯一idelem.id即可,可避免列表重排时出现异常渲染问题:
<Grid item xs={12} sm={6} md={3} key={elem.id}>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 11:09:00