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

使用react-router-dom v6时如何正确渲染路由组件的props

问题原因

你在react-router-dom v6中配置路由时,对Route组件的element属性用法错误,是导致props无法传递、组件不渲染的核心原因:

  • v6版本的element属性要求直接传入React JSX节点,不支持传入渲染函数,你写的element={() => { <Component /> }}形式不会被路由解析执行,最终返回空值
  • 你写的箭头函数内部没有写return关键字,就算路由执行这个函数,拿到的返回值也是undefined,无法渲染组件
  • v6版本路由默认就是精确匹配规则,手动加的exact属性是无效冗余代码,可以直接删除
    另外你的代码里agetContactId存在明显拼写错误,常规命名应为getContactId,可以根据实际业务方法名修正。
修复后可运行代码
return (
  <div className="ui container">
    <Router>
      <Header />
      <Routes>
        <Route
          path="/"
          element={
            <ContactList
              contacts={contacts}
              getContactId={removeContactHandler}
            />
          }
        />
        <Route path="/add" element={<AddContact />} />
      </Routes>
    </Router>
  </div>
);
补充说明
  • 给路由对应组件传递自定义props时,直接在element内的JSX节点上绑定属性即可,和普通父子组件传参没有区别
  • 如果需要在路由跳转前做权限校验、数据预加载等逻辑,不要在element里写内联函数,应该封装独立的路由包装组件实现逻辑
  • v6版本只有嵌套子路由会按照路径前缀做匹配,一级路由默认全路径精确匹配,不需要额外加匹配规则属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:01:01