2016-05-05 2 views
0

у меня есть это простое приложение:IndexRedirect только если сегмент еще не определен?

// 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')) 

Когда я в /foo/3, если нажать на ссылку, которая указывает на /foo/ я попадаю в /foo/1.

Есть ли простой способ сделать перенаправление IndexRedirect уже используемому segment вместо стандартного?

ответ

0

Вы можете использовать browserHistory слушателю

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

и заменить <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

Спасибо, мой маршрутизатор визуализируется непосредственно с помощью response-dom.render, переменная 'defaultIndex', кажется, не обновляется в маршрутизаторе при изменении маршрута (вызывается слушатель, но значение в маршрутизаторе не получается обновлено). –

+0

Перемещение маршрутизатора внутри компонента, я могу правильно обновить значение 'to', но я получаю' Вы не можете изменить <Маршрутные маршруты>; он будет проигнорирован ' –

Смежные вопросы