2016-05-05 2 views
0

私はこの単純なアプリを持っている:セグメントがまだ定義されていない場合のみIndexRedirect?

私は /foo/1にリダイレクト /foo/を指すリンクをクリックした場合、私は、 /foo/3でよ
// index.js 

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

import A from './a' 
import B from './b' 

render((
    <Router history={browserHistory}> 
     <Route path='/foo' component={A}> 
      <IndexRedirect to='1' /> 
      <Route path=':bar' component={B} /> 
     </Route> 
    </Router> 
), document.getElementById('root')) 

IndexRedirectをデフォルトの代わりに既に使用中のsegmentにリダイレクトする簡単な方法はありますか?

答えて

0

あなたは

browserHistory.listen(function(ev) { 
    console.log('listen', ev.pathname.split('/')); 
    var pathData = ev.pathname.split('/'); 
}); 

browserHistoryリスナーを使用して、例えば を好きにご<IndexRedirect to='1' />を置き換えることができます。これは私のために

var defaultIndex = 1 
browserHistory.listen(function(ev) { 
    console.log('listen', ev.pathname.split('/')); 
    var pathData = ev.pathname.split('/'); 
    defaultIndex = pathData[1] 
}); 
<Router history={browserHistory}> 
    <Route path='/foo' component={A}> 
     <IndexRedirect to={defaultIndex} /> 
     <Route path=':bar' component={B} /> 
    </Route> 
</Router> 

動作します。

+0

私のルーターはreact-dom.renderによって直接レンダリングされます。ルートが変更されたときに 'defaultIndex'変数がルーターで更新されないようです(リスナーは呼び出されますが、ルーターの値は取得されません更新しました)。 –

+0

ルータをコンポーネント内に移動すると、 'to'値を適切に更新できますが、' <ルーターのルート>は変更できません。それは無視される ' –

関連する問題