我正在尝试升级到React Router v6 (react-router-dom 6.0.1
)。
这是我的更新后的代码:
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/lab" element={<Lab />} />
<Route render={() => <Navigate to="/" />} />
</Routes>
</BrowserRouter>
最后一个 Route
会将其余的路径重定向到 /
.
然而,我遇到了一个错误
TS2322: 类型 '{ render: () => Element; }' 不能分配给类型 'IntrinsicAttributes & (PathRouteProps | LayoutRouteProps | IndexRouteProps)'。属性 'render' 在类型 'IntrinsicAttributes & (PathRouteProps | LayoutRouteProps | IndexRouteProps)' 中不存在。
但是,根据文档,它确实有 Route
的 render
。我该如何正确使用它?
render
并推荐使用children
,但是您正在阅读的部分似乎是关于从v5升级到v5.1,他们只是在v6中删除了render
。看起来<Route element={<Navigate to="/" />} />
是新样式。 - Bergi<Route render={() => ...}>
转换为<Route element={...}>
,这样就可以完成了。 - Bergi<Route path="*" element={<Navigate to="/" />} />
,请随意发布为答案! - Hongbo Miao