React Router 6.6 + TypeScript报错:children属性不存在如何解决?
React Router 6.6 + TypeScript:RouterProvider children属性错误修复
问题原因
React Router 6.4及以上版本引入的RouterProvider组件(配合createBrowserRouter等新路由API)不再支持通过children传递组件,所有路由组件必须定义在路由配置对象的routes数组中,这是触发TypeScript报错的核心原因。
修复步骤
- 调整路由配置文件(比如
router.ts),将<App>作为根路由的element属性值,整合到路由配置里:
import { createBrowserRouter } from 'react-router-dom'; import App from './App'; // 按需导入其他路由组件,比如About、Home等 export const router = createBrowserRouter([ { path: '/', element: <App />, // 如果App里有<Outlet>,可以在这里添加子路由 children: [ // { path: 'home', element: <Home /> }, // { path: 'about', element: <About /> } ] } ]);
- 修改index.tsx,移除
RouterProvider的children属性:
import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import { RouterProvider } from 'react-router-dom'; import { router } from './router'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement ); root.render( <RouterProvider router={router} /> );
补充说明
如果你的App组件内原本包含<Outlet>组件(用于渲染子路由内容),这种结构完全适配新的路由配置方式,只需要确保路由配置中的children数组与Outlet的位置对应即可。
内容的提问来源于stack exchange,提问作者Jahangir Kazimli
相关产品推荐
相关产品推荐

