2016-08-10 5 views
2

私はこのようなルートでRouterに反応している:React Routerで送信されるルートパラメータを変更するにはどうすればよいですか?

<Router history={history}> 
    <Route path='/' component={App} /> 
    <Route path='/:fileType/:fileId' component={App} /> 
</Router> 

これがそうのように私のAppに小道具を置く:それはこの形式を期待するよう

{ 
    fileType: 'whatever', 
    fileId: 'ABC5734' 
} 

しかし、私は私のコンポーネントを設計した:

{ 
    file: { 
    type: 'whatever', 
    id: 'ABC5734' 
    } 
} 

したがって、コンポーネントに送信される前にパスプロップを変換したいと思います。このようなもの:

<Router history={history}> 
    <Route path='/' component={App} /> 
    <Route 
    path='/:fileType/:fileId' 
    component={(props) => <App file={{type: props.fileType, id: props.fileId}} />} /> 
</Router> 

これは可能ですか?

答えて

1

が反応-ルータをthis.props.params下ルートのparamsを送信します。だから、あなたのコードを修正してください。

+0

<Router history={history}> <Route path='/' component={App} /> <Route path='/:fileType/:fileId' component={(props) => <App file={{type: props.params.fileType, id: props.params.fileId}} />} /> </Router> 
'(小道具)=><アプリケーションファイル= {{タイプ:props.params.fileType、ID:props.params.fileId}} />'子コンポーネントとしてアプリケーションコンポーネントを有する、それ自体ダム成分であります。 –

2

高次コンポーネントを使用する必要があります。

あなたはrecomposeからmapProps高次のコンポーネントを使用することができます。

関連する問題