2016-05-05 9 views
0

Ich habe diese einfache Anwendung:IndexRedirect nur, wenn das Segment noch nicht definiert ist?

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

Wenn ich /foo/3 bin, wenn ich auf einen Link klicken, der /foo/ verweist auf ich /foo/1 weitergeleitet.

Gibt es eine einfache Möglichkeit, die IndexRedirect Weiterleitung zu der bereits verwendeten anstatt der Standard-zu machen?

Antwort

0

können Sie browserHistory Zuhörer

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

verwenden und ersetzen Sie Ihre <IndexRedirect to='1' />, was auch immer Sie zum Beispiel wollen:

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> 

das für mich arbeitet.

+0

Danke, mein Router wird direkt von react-dom.render gerendert, die Variable 'defaultIndex' scheint im Router nicht aktualisiert zu werden, wenn sich die Route ändert (der Listener wird aufgerufen, aber der Wert im Router wird nicht angezeigt) aktualisiert). –

+0

Wenn ich den Router in eine Komponente verschiebe, kann ich den 'to'-Wert korrekt aktualisieren, aber ich bekomme 'Sie können nicht ändern; es wird ignoriert werden –

Verwandte Themen