2016-06-21 2 views
1

私は反応ルータ(2.4.1)を使用していますが、ワイルドカード(path = "*")フォールバックルートを使用して「見つからない」コンポーネントを表示しています。反応ルータ<Route />コンポーネントのurlパラメータを検証できますか?

私のルートの1つは、同じように定義されています。

<Route path="/campaigns/:category" component={CampaignsPage} /> 

私は、このカテゴリは、カテゴリの私のリストに存在するかどうかを確認するにはどのような方法でcategoryルートのparamを検証することはできますか?そうでない場合は、ルータをワイルドカードに落として、Not Foundコンポーネントを表示します。

+0

githubの問題で 'url-matcher'を使うという提案がありました:https://github.com/reactjs/react-router/issues/2286#issuecomment-158692205 –

+0

現在、「ハッピー」なのは、これを実装する方法。反応ルータの開発者は、これがおそらく近い将来に実装されるだろうと述べています。 – Chris

答えて

0

受信したパラメータを 'campaign'コンポーネント内で検証できますか?

class CampaignsPage extends Component { 
    render() { 
     const validCampaignCats = [...] 
     const receivedCampaignCat = this.props.params.category 

     const renderChild = (actualCat, validCats) => { 
      if (!validCats.includes(actualCat)) { 
       return <YourErrorPage/> 
      } 
      return this.props.children 
     } 

     return (
      <div> 
       <Header/> 
       { renderChild(receivedCampaignCat, validCampaignCats) } 
       <Footer/> 
      </div> 
     ) 
    } 
} 

希望に役立つことを期待してください。

関連する問題