如何通过React检查输入的url参数是否存在于location.pathname中

时间:2019-03-07 09:02:37

标签: javascript reactjs

好吧,我尝试通过板载React路由来理解遗留代码。

我有一个类似的网址

/home/reports/some_report_numbers

当用户这样更改ulr时:

/home/reports/some_report_numb

我要检查道具this.props.location.pathname中是否存在“ some_report_numb”。如果存在-可以,请采用这种方式,否则请采用其他方式。

也许这是完全错误的方法?好吧,当显示报告并且用户仅删除url中的一些字母时,我需要重定向到/ home /页面。为此,我需要以某种方式检查该数字的报告是否存在。

也许可以通过

完成
<Route name={SomeRouteName} path='reports/:reportId' component={HomePage} />

1 个答案:

答案 0 :(得分:0)

根据react-router-dom

的文档

链接:https://reacttraining.com/react-router/web/example/url-params

match成为可以在组件中使用的对象。就像文档中的说明一样,您可以通过以下步骤访问match对象:

  • Route componentthis.props.match
  • Route render({ match }) => ()
  • Route children({ match }) => ()
  • withRouterthis.props.match
  • matchPath作为return value

例如,如果您具有以下路线:

<Route path="/reports/:reportId" component={HomePage} />

在组件中,您可以使用this.props.match来访问它,因为它是一个对象,并且在其中,您将拥有所需的对象。

之后,您可以检查URL中包含哪些参数。

现在,如果要重定向用户,则可以使用<Redirect to={'/your/path'} />