[英]Why the React Route with 2 optional params not matching a simple URL
仅供参考,我使用的是React Router 5.我的package.json中有以下依赖项:
“react-router-dom”:“^ 5.0.0”,
[用更简化的例子编辑的问题]
让我来描述一下我面临的问题。 以下所有网址
http://localhost:3001/contact
http://localhost:3001/contact/
http://localhost:3001/contact/john50
匹配以下路线(1个可选参数)
<Route path="/contact/:name([A-Za-z]+)?" component={Contact} />
然后,我通过添加另一个可选参数age来更新上面的Route。 它看起来像这样:
<Route path="/contact/:name([A-Za-z]+)?:age(\d{2})?" component={Contact} />
为什么这个带有2个可选参数的新更新路由与此URL匹配:
http://localhost:3001/contact/
而不是这个URL:
http://localhost:3001/contact
为什么? 谁能解释一下?
你必须将param包含在()
并将其包含在可选的正则表达式中/
中
<Route path="/about/:param1(\d{2}-\d{2}-\d{4})?/:param2(\.[A-Za-z]+)?" component={About} />
注意:Params需要由/
你没有。 你可以像你的路线一样
<Route path="/about/:param1(\d{2}-\d{2}-\d{4})?/:param2(\.[A-Za-z]+)?" component={About} />
然后你的导航链接将是
const Navigation = () => (
<ul className="navLinks">
<li><NavLink to="/">Home</NavLink></li>
<li><NavLink to="/contact/john/50">Working Contact</NavLink></li>
<li><NavLink to="/contact/">Contact With Slash</NavLink></li>
<li><NavLink to="/contact">Contact Without Slash</NavLink></li>
</ul>
);
工作演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.