我正在尝试升级到React路由器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
正在将其余路径重定向到/
。
但是,我得到了一个错误
TS 2322:类型'{渲染:()=〉元素;}“不能赋值给类型”IntrinsicAttributes &(PathRouteProps|布局路径属性|索引路由属性)“。 属性“render”在类型“IntrinsicAttributes &(PathRouteProps”上不存在|布局路径属性|索引路由属性)“。
但是,根据文档,它确实有render
为Route
,我如何正确使用它?
9条答案
按热度按时间7gs2gvoe1#
我认为您应该使用无匹配路由方法。
请在文档中查看此内容:* 添加“无匹配”路由 *
为了保持历史记录的干净,您应该设置
replace
prop。这将避免用户单击“上一步”后出现额外的重定向。ny6fqffe2#
我找到了另一种方法:
请参阅 * 概述、导航 *。
5fjcxozz3#
创建文件RequireAuth.tsx
导入组件到需要用户私有的路由器:
f4t66c6m4#
在React的第5版中,也就是 react-router-dom,我们有Redirect组件,但是在React的第6版中,它被更新为Navigate组件。
我们可以在这些组件中传递replace,以避免单击后退和前进选项时不必要的重定向。
使用示范附于下:
bgibtngc5#
khbbv19g6#
hmtdttj47#
适用于REACT版本6
看看这个例子
hsvhsicv8#
对于类组件,首先要制作一个功能组件,然后使用HOC技术使用useNavigate React钩子。
就像这样:
文件 * 使用浏览器.js*
然后在其他类组件中使用它,如下所示:
使用这样的道具进行重定向:
kse8i1jr9#