我可以使用反应路由器创建别名路线吗?
问题描述:
我正在使用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" />
谢谢鲍尔泰克。我不打算做重定向(正如我的问题中提到的那样)。相反,我想/ oldListUrl和/ newListUrl是彼此的别名。 –
对不起,我的坏。难道你不能为每个URL定义单独的'Route'组件(一个用于传统URL,一个用于新建)? –
在我看来,Bartek第一次做对了,即使他认为他不在,OP也在描述重定向。而且,是的,巴尔泰克再次表达了平行线路也可以发挥作用的观点(但这显然不像巴尔泰克的第一个答案那样正确,因为它感觉更加混乱)。 – juanitogan