给Route组件path属性传正则可运行但报类型警告,是否不支持该用法?
问题原因
你遇到的警告是因为React Router v6 及以上版本不再支持直接给 Route 组件的 path 属性传入正则类型的值,官方对 path prop 的类型校验规则已经限定为仅支持字符串/字符串数组,所以哪怕功能能正常运行,类型校验也会抛出警告。
注:仅 v5 及更早的 React Router 版本支持直接传入正则作为 path 值
解决方法
- 如果你只是要匹配根路径,完全不需要写正则,直接使用字符串路径即可,配合
exact属性就能实现精确匹配:
<Route exact path="/"> <Redirect to="/home" /> </Route>
- 如果你使用的是 v6 版本,已经废弃了
exact属性和Redirect组件,对应写法调整为:
<Route path="/" element={<Navigate to="/home" replace />} />
- 如果确实需要用到正则规则约束路径,可以把正则写在路径参数的约束位,这类写法是官方支持的,不会触发警告,示例:
// 仅匹配id为数字的详情页路径 <Route path="/detail/:id(\d+)" element={<Detail />} />
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

