在react-route r中设置params的类型

时间:2017-03-05 14:01:26

标签: javascript reactjs redux react-router

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

例如,我/profile/:id允许我转到/profile/1

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

如何检查类型?并显示错误或其他?

使用typescript和react-router。

3 个答案:

答案 0 :(得分:3)

一个。你不能在路线的参数上设置类型检查。

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

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

答案 1 :(得分:1)

其他提到的答案之一效率低下,另一个已经过时。

我认为最好的解决方案是通过编写一个简单的正则表达式在id参数上设置 type

如果您希望ID仅接受整数,则可以这样做:

/profile/:id(\\d+)

/* the `(\\d+)` is a regular expression that will only accept integers */

path-to-regex文档中详细了解此内容。 path-to-regex在内部由react-router使用,因此不需要安装任何东西。

答案 2 :(得分:0)

我想到的快速黑客:

componentWillMount()中(或在纯组件的渲染功能中,但这可能是一个更糟糕的想法),您可以引用与this.props.match.url一起传递的URL。

您可以对字符串进行切片以消除/,然后将网址传递给正则表达式或类似parseInt()的函数进行准类型检查。

然后你需要做的就是从react-router提取Redirect component并有条件地将其关闭(如果它不属于类型,可能会发送给你的404页面你允许。)。