javascript-使用react-router的自定义动态路由

我正在从事的项目对非常规路线的要求很少.路由具有以下结构/<-name-> -abc-xyz-<-id->名称和ID是动态的.现在我想使用反应路由器匹配此路由.所以我做了以下

<路由路径='/:name-abc-xyz-:id'组件= {查看} />

对于名称name格式为def-abc-xyz- *的情况,此操作将失败.

如何解决此问题,以便我直接在View组件中获取名称和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 uses path-to-regexp for its route matching.

这意味着如果您使用以下格式提供路线:

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

比较(IE)时也可以使用

def-abc-xyz-12

截图来自route tester

enter image description here


参考:https://github.com/ReactTraining/react-router/issues/5536#issuecomment-330548834

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

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小