首页 > 解决方案 > 匹配某个字符串或为空的可选路由路径

问题描述

我想使用匹配的路由器路径,/client并且client/upload完全为了Redirect我的组件正确。我知道为了编写一个可选参数,你会这样写

<Redirect exact from={`${match.path}(/:id)?`} to={`${match.url}/upload/view`} />

但是现在我希望我的路径参数只能被限制为上传,所以我这样写

<Redirect exact from={`${match.path}/:id(|upload)`} to={`${match.url}/upload/view`} />

它从“/client/upload”重定向${match.path}/${match.path}/upload/view正确但不适用于${match.path}.

我也试过${match.path}(/:id(|upload))?,,${match.path}/?:id(|upload)'${match.path}(/upload)?没有一个工作

我想${match.path}${match.path}/${match.path}/upload重定向到'${match.url}/upload/view

现在我正在写两个不同的重定向,比如

<Redirect exact from={match.path} to={`${match.url}/upload/view`} />
<Redirect exact from={`${match.path}/upload`} to={`${match.url}/upload/view`} />

但我真的很想只写一篇Redirect

非常感谢任何帮助。

标签: reactjsreact-routerreact-router-v4

解决方案


<Redirect exact from='/client(/upload)?' to='/client/upload/view' />

这应该可以解决您的问题,因为它说完全匹配/client并且/client/upload将被重定向参数中定义的路径。


推荐阅读