好吧,我尝试通过板载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} />
答案 0 :(得分:0)
根据react-router-dom
链接:https://reacttraining.com/react-router/web/example/url-params
match
成为可以在组件中使用的对象。就像文档中的说明一样,您可以通过以下步骤访问match
对象:
Route component
为this.props.match
Route render
为({ match }) => ()
Route children
为({ match }) => ()
withRouter
为this.props.match
matchPath
作为return value
例如,如果您具有以下路线:
<Route path="/reports/:reportId" component={HomePage} />
在组件中,您可以使用this.props.match
来访问它,因为它是一个对象,并且在其中,您将拥有所需的对象。
之后,您可以检查URL中包含哪些参数。
现在,如果要重定向用户,则可以使用<Redirect to={'/your/path'} />