我可以使用反应路由器创建别名路线吗?

我可以使用反应路由器创建别名路线吗?

问题描述:

我正在使用react和react-router来构建一个新项目。我打算重组我的路线,使之比以前更干净。不过,我不想破解用户可能拥有的旧书签。我可以使用反应路由器创建别名路线吗?

例如,我的新航线可能看起来像:

<Route path="/" component={Layout}> 
     <Route component={ItemList} path="items/:category" /> 
     <Route component={ItemDetail} path="item/:designCode" /> 
    </Route> 

一些示例路线可以,比方说 - /项目/电子/用品​​/礼品。

不过,我有一个旧的代码库,有一种途径 - /电子项,/买入礼品等

有没有一种方法,我可以创建路径别名能够映射这些遗留的URL到新结构化的?

我碰到过something similar in Vue 2.0,但我对反应解决方案特别感兴趣。任何建议(除了 - 使用重定向或使用Vue本身,而不是:D)?

假设你正在使用React-Router v4可以使用Redirect成分是这样的:

<Route path="newListUrl" component={ItemList}/> 
<Route path='/oldListUrl' render={() => (
    <Redirect to="newUrl" /> 
)}/> 

如果您使用React-Router v3

<Route path="newListUrl" component={ItemList}/> 
<Redirect from='oldListUrl'to="newListUrl" /> 
+0

谢谢鲍尔泰克。我不打算做重定向(正如我的问题中提到的那样)。相反,我想/ oldListUrl和/ newListUrl是彼此的别名。 –

+0

对不起,我的坏。难道你不能为每个URL定义单独的'Route'组件(一个用于传统URL,一个用于新建)? –

+0

在我看来,Bartek第一次做对了,即使他认为他不在,OP也在描述重定向。而且,是的,巴尔泰克再次表达了平行线路也可以发挥作用的观点(但这显然不像巴尔泰克的第一个答案那样正确,因为它感觉更加混乱)。 – juanitogan