当路径包含某事时,是否有一种方法(或者什么是最好的方式,如果存在的话)告诉反应路由器(v4)包含组件?
示例:
假设模式为/users/:id
,所有休闲路线应匹配:
/users/111
home/users/111
article/123/users/111
/users/111/article/123
home/users/111/article/123
编辑:规则应动态应用,即无需枚举所有可能的路线:/.*\/users\/:id.*/
答案 0 :(得分:0)
我假设您正在使用开关?
如果你不使用确切的
<Route path="/" component={Home}/>
然后每个路径都会返回此路径,如果你这样做
<Route exact path="/" component={Home}/>
只保留路径名为空将返回此路由。
如果你想让几个路径名返回相同的路径,你可以使用多个Route
s,有/无精确,无论你喜欢什么。
类似的东西:
<Router history={history}>
<Switch>
<Route exact path="/" component={Home}/>
<Route exact path="/:id" component={Home}/>
<Route path="/:id/article" component={Home}/>
</Switch>
</Router>
如果路径名为空,则返回Home
,123,123 / article或123 / article /“无论你放在这里”。
如果这不符合您的需求,您可以创建一个解决方法,在Switch的末尾放置一个始终返回Home的Route,当它执行时,传递所需的匹配。然后,您可以使用Home组件插入自己的逻辑。
const PageRouter = ({match}) => {
if (match.params.someParameter !== "legit") {
history.replace("/not-found");
}
return <HomePage/>
};