2017-03-29 52 views
1

我公司擁有的網址是這樣的:陣營美化網址

http://helloworld.com/product?filter[category][0]=persian 

我們想要的網址看起來像這樣:

http://helloworld.com/product-persian 

當過濾器被應用到當前的URL,它看起來是這樣的:

http://helloworld.com/product?filter[category][0]=persian&filter[style][0]=border 

我們想過濾器保持不變。所以,我們希望新的URL會顯示此:

http://helloworld.com/product-persian&filter[style][0]=border 

使用反應過來,是有這樣做的最佳生方式?我簡要地看了一下https://github.com/reactjs/react-router-tutorial/tree/master/lessons/10-clean-urls並簡要介紹了redis。在使用反應框架時,您使用什麼方法來做到這一點?

回答

0

要使用這樣的URL: http://helloworld.com/product-persian,react-router是不錯的選擇。

寫這樣的:

import React from 'react' 
import ReactDOM from 'react-dom' 
import { Router, Route, browserHistory } from 'react-router' 

const Routes = React.createClass({ 
    render(){ 
    return(
     <Router history={ browserHistory }> 
     <Route path='/home' component={ homeComponent }/> 
     <Route path='/product' component={ productsComponent }> 
      <Route path='/product-:productName' component={ sigleProductComponent }/> {/* Single product route */} 
      <Route path='/product-:productName&filter=:filterData' component={ productsComponent }/> {/* Product with filter params route */} 
     </Route> 
     </Router> 
    ) 
    } 
}) 

ReactDOM.render(<Routes />, document.getElementById('app')) 

在此代碼示例,你在網址中使用了params,來調用這個道具使用this.props.params.productNamethis.props.params.filterData在組件sigleProductComponent

此道具通過react-router組件。

我希望這段代碼能幫助你。

+0

感謝您的回覆!在做了另一個項目的幾天後回到這裏。我們已經在使用react-router了,並且已經有了一些建議。例如':productName'。我們希望從uri中刪除'&filter =',並將其替換爲特定實例上的filter參數的名稱。看看你提供了什麼(再次感謝你),看起來我們仍然會得到'?filter ...'來顯示。我看着這個不正確嗎? – Lefty