我想在React(typescript)版本中使用以下代码创建routes.ts
文件(JS版本中的示例)
routes = [
{
path: 'app', component: isLoggedIn ? <HomeComponent /> : <Navigate to="/login" />,
children: [
{ path: '', component: <Navigate to="/dashboard" /> },
{ path: 'dashboard', component: <DashboardComponent /> },
{ path: 'other', component: <OtherComponent /> },
]
},
{ path: 'login', component: <LoginComponent /> },
{ path: 'register', component: <RegisterComponent /> },
{ path: '**', component: <NotFoundComponent /> },
]
在App.tsx
中应该是这样,JS版本的引用
return (
<BrowserRouter>
{routes.map(r => {
...//logic
})}
</BrowserRouter>
)
这是写在非常简短的只是为了解释的要求。PS:JS版本可以很好地处理这种逻辑,但是TS转换很困难,并且目前在文档和论坛中不可用
1条答案
按热度按时间gjmwrych1#
我建议不要使用自己的路径渲染逻辑,而是将
routes
配置对象转换为一种更容易使用react-router-dom
的格式,不需要做太多更改,基本上只需将component
属性的组件转换为element
属性即可。导入并使用
createBrowserRouter
(* 任何数据路由器,有关详细信息,请参见Picking a Router *)和RouterProvider
。typescript 演示
如果您还没有完全准备好跳转到数据路由器,那么请保留
BrowserRouter
,并使用useRoutes
挂钩代替。