繁体   English   中英

使用react-router定制动态路由

[英]Custom dynamic routes using react-router

我正在开展的项目几乎没有非常规路线要求。 该路由具有以下结构/<--name-->-abc-xyz-<--id-->其中name和id是动态的。 现在我想使用反应路由器匹配此路由。 所以我做了以下事情

<Route path='/:name-abc-xyz-:id' component={View} />

对于名称名称为def-abc-xyz- *的情况,这会失败。

如何修复此问题,以便直接在View组件中获取name和id的值。

我有一个解决方法,我做<Route path='/:dynamicId' component={View} />

现在我解析dynamicId并从我的View组件中取出它的名称和id。 有没有办法在不解析的情况下实现以下目的?

标准路由

在V4中管理它的标准方法是在config中提供以下路由:

/:name/abc-xyz/:id

如果您不受另一个解析器约束使用上述虚线架构,则此解决方案将满足您的需求。

参考: https//github.com/reacttraining/react-router/tree/master/packages/react-router-config#route-configuration-shape

如果您与静态路由冲突,请将动态路由放在路径脚手架中

参考: https//tylermcginnis.com/react-router-ambiguous-matches/

自定义路由格式

另外,请注意

React Router使用path-to-regexp进行路由匹配。

这意味着如果您以这种格式提供路线:

/:name(\w+-)?abc-xyz(\w+-)?:id

比较(IE)时这也会起作用

def-abc-xyz-12

路线测试仪截图

在此输入图像描述 参考: https//github.com/ReactTraining/react-router/issues/5536#issuecomment-330548834

路线测试仪: https//pshrmn.github.io/route-tester/#/def-abc-xyz-12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM