在反应路由器中设置参数类型

Анд*_*зюк 8 javascript reactjs react-router redux

如何在 URL 匹配类型中传递参数?

例如我有/profile/:id它允许我去/profile/1

但问题是我也可以过去/profile/1qwr/而我什么也得不到。

如何检查 URL 参数的类型并显示错误或其他内容?

xyr*_*res 10

其他答案已过时。

最好的解决办法,在我看来,是设置一个类型id写一个简单的正则表达式的参数。

如果您希望 id 只接受整数,这就是您要做的:

/profile/:id(\\d+)

/* the `(\\d+)` is a regular expression that will only accept integers */
Run Code Online (Sandbox Code Playgroud)

path-to-regex文档中阅读有关此内容的更多信息。path-to-regex由 react-router 内部使用,所以不需要安装任何东西。

  • 这是对的。作为附录,如果您的参数是可选的,您可以像这样使用它: `/profile/:id(\\d+)?` `'/profile/1' = { id: 1 }` `'/profile/two' = {}` `'/个人资料' = {}` (3认同)

Ars*_*wal 5

A. 不能对路由参数设置类型检查。

B. 如果你想显示一些错误 - 通过获取这样的参数在你的渲染方法中处理它this.props.params.id。但即使在这里你也无法区分类型,因为你总是会得到字符串。

您可以尝试使用parseInt并检查转换是否成功,然后确定要做什么。