2016-03-15 10 views
5

Sto usando reagire-router-2. Voglio reindirizzare a una pagina a livello di programmazione dopo il login riuscito o dopo qualche azione eseguita.redirect ad una pagina di programmazione in reagire-router 2

Il mio file percorso è come questo (routes.js)

<Route path="/" component={App}> 
     <IndexRoute component={Home}/> 
     <Route path="/login" component={Login} onEnter={redirectToDashboard}/> 
     <Route path="dashboard" component={Dashboard} onEnter={redirectToLogin}/> 
    </Route> 

onEnter ganci

function redirectToLogin(nextState, replace) { 
    // Perform some authentication check 
    if (!loggedIn) { 
     replace({ 
      pathname: '/login', 
      state: { nextPathname: nextState.location.pathname } 
     }); 
    } 
} 

function redirectToDashboard(nextState, replace) { 
    // Perform some check if already authenticated 
    if (loggedIn) { 
     replace('/dashboard') 
    } 
} 

voglio reindirizzare a Dashboardcomponent da Accessocomponent dopo login effettuato con successo.

risposta

5

Per reindirizzare è possibile utilizzare router oggetto dal contesto. Devi dichiarare i tipi di contesto nel tuo componente (componente dal quale fai il reindirizzamento). Di più su contesto link

ES6/7 sintassi:

static contextTypes = { 
    router: React.PropTypes.object.isRequired 
} 

Ora si ha accesso a oggetti router e si può fare il reindirizzamento:

this.context.router.push('/dashboard'); 
Problemi correlati