2017-04-19 60 views
3

我正在使用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)?

回答

1

假設你正在使用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