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

React-Router 6中如何给Route的element属性传入的组件传递props?

给Route关联组件传递props的方法

React Router v6 中element属性接收的是标准JSX元素,你可以像平时使用React组件一样直接挂载需要传递的props,不需要额外的特殊语法。

方法1:直接内联传递静态/动态props

不管是固定值、父组件的state、自定义方法都可以直接绑定在组件上:

<Route path="/" element={<App />} >
    <Route 
        path="table" 
        element={
          <Table 
            pageSize={10} 
            showPagination={true} 
            tableData={yourBusinessData} 
            onRowClick={handleRowClick} 
          />
        } 
    />
</Route>

方法2:传递路由相关数据作为props

如果你需要把路由参数、搜索参数这类路由自带数据作为props传递,可先在父组件调用对应的路由Hook拿到数据再绑定:

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

function RouterEntry() {
  const params = useParams();
  const [searchParams] = useSearchParams();
  const yourBusinessData = []; // 业务数据
  
  return (
    <Routes>
      <Route path="/" element={<App />} >
        <Route 
          path="table/:tableId" 
          element={
            <Table 
              tableId={params.tableId} 
              searchKeyword={searchParams.get('keyword')}
              tableData={yourBusinessData}
            />
          } 
        />
      </Route>
    </Routes>
  )
}

注意:不要给element属性传递函数返回组件的写法(比如element={() => <Table />}),这会导致组件每次路由切换时都重新挂载,出现状态丢失、性能下降的问题,直接传递JSX元素即可,动态props更新时组件会正常重渲染不会触发全量重新挂载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:05