2016-04-22 15 views
0

私はタイトルがあいまいかもしれないことを知っていますので、私は自分の問題をできる限り良く説明しようとします。リアクタ・ルータ - 2つのルートのうちの1つ

私はWordPressのテーマをやっているので、カテゴリとタグページの両方にリンクする必要があります。その構造は/[categories|tags]/itemです。今私はそれらの2つのアイテムのためのルートを作る必要があります。私はこれを次のようにしてみました:

<Route path="/category/:slug" component={Archives} /> 
    <Route path="/tag/:slug" component={Archives} /> 

しかし、これはカテゴリやタグの区別がありません。私は<Route path="/:type/:slug" component={Archives} />と一緒に行くことをやめてはいけません。なぜなら、これは入れ子になったページを使う必要があるときに混乱するかもしれないからです。私はまた、URLスキームを変更したくありません。

答えて

1

あなたはタイプが何であるかを決定するためにクエリを使用することができます。

this.props.location.query // you could set up some conditional logic based on type 

UPDATE:

<Link to={{ pathname: '/category/[slug]', query: { type: 'category' } }} activeClassName="active">Some Link</Link> 

がその後を経由してあなたのアーカイブビューでクエリにアクセスするURLスキーム

... 

<Route path="/category/:slug" component={Archives} /> 
<Route path="/tag/:slug" component={Archives} /> 

// Then in Archives component you could do 

class Archive extends React.Component { 
    ... 
    render() { 
     const path = this.props.location.pathname; 
     const category = path.indexOf('/category/') !== -1; 
     const tag = path.indexOf('/tag/') !== -1; 
     ... // some logic based on tag and category 
     return { 
     ... 
     }  
    } 
} 
を変更することなく、
+0

あなたの解決策はURLに '?type = category'を追加して、私はこれを避けたいと思います。 –

+0

私は似たような解決方法を使っていましたが、 'location.pathname'を使って正しい方法です。 –