redux 设置React路由器中的参数类型

rmbxnbpk  于 2022-11-12  发布在  React
关注(0)|答案(3)|浏览(123)

如何在URL匹配类型中传递参数?
例如,我有/profile/:id,它允许我去/profile/1
但问题是,我也可以用/profile/1qwr/,但我什么也得不到。
如何检查URL参数的类型并显示错误或其他内容?

pepwfjgg

pepwfjgg1#

注意:此答案自v6起已过时:See discussion on Github(感谢@dan指出这一点)。
原始答案

在我看来,最好的解决方案是通过编写一个简单的正则表达式在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内部使用,因此无需安装任何内容。

dgiusagp

dgiusagp2#

答:不能对路由的参数设置类型检查。
B.如果你想显示一些错误--在你的render方法中处理它,方法是获取像this.props.params.id这样的参数。但是即使在这里,你也不能区分类型,因为你总是会得到字符串。
您可以尝试使用parseInt并检查转换是否成功,然后确定要执行的操作。

5kgi1eie

5kgi1eie3#

快速的破解我这才想到:
componentWillMount()中(或者在Pure Component的render函数中,但这可能是一个更糟糕的主意),您可以引用使用this.props.match.url传递的URL。
您可以对字符串进行切片以消除/,然后将url传递给regex或parseInt()之类的函数进行准类型检查。
然后,您需要做的就是从react-router中拉入Redirect component,并有条件地将其关闭(如果它不是您允许的类型,可能会将您的404页面发送给它)。

相关问题