8

Sto creando un'app in cui I Login/Logout ha una casa, circa, profilo ecc. Anche utilizzando router di risposta, tuttavia quando Eseguo l'accesso Desidero che l'app passi all'ultima route in cui si trovava, a volte funziona ad esempio se visito, quindi accesso e accesso, mi riporta a circa, tuttavia se visito la radice dell'app '/' e poi vai al login, e accedi, mi riporta alla prima pagina in cui mi trovavo sempre (che sarebbe la pagina predefinita quando apri il browser o la scheda). L'ho scritto così, e penso che il modo in cui potrei averlo fatto è molto ingenuo. L'ho fatto nel metodo di rendering che è chiamato molto. Penso che abbia a volte fatto ma non ne sono del tutto sicuro. Speravo in qualche consiglio, il codice:goBack() portarmi fino alla prima voce invece di dove voglio essere

constructor(props, context) { 
    super(props, context); 
    this.state = UserStore.getState(); 
    this.context = context; 
    } 

render() { 

    console.log(this.state.user.get('authenticated')); 
    if(this.state.user.get('authenticated')){ 
     this.context.history.goBack(); 
    } 

    return (
    //stuff 
    ) 

dovrei spingere uno stato nella storia di ogni percorso che visito, ho anche notato se aspetto un po 'prima di accedere a volte si comporta correttamente, forse lo aggiunge alla storia di un un po 'in ritardo o ci vuole un po' di tempo? Non è del tutto sicuro su come fare il debugging, console.log (this.context.history) mostra solo alcune delle sue funzioni immagino che potrei cercare nel posto sbagliato?

percorsi:

export default (
    <Route component={App}> 
    <Route path="/" component={Dashboard} /> 
    <Route path="dashboard" component={Dashboard} onEnter={requireAuth} /> 
    <Route path="about" component={About} /> 
    <Route path="profile" component={Profile} onEnter={requireAuth}/> 
    <Route path="login" component={LoginSignupPage} /> 
    <Route path="channels" component={Channels} /> 
    </Route> 
); 

iniezione di reagire-router

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import Iso from 'iso'; 
import createBrowserHistory from 'history/lib/createBrowserHistory'; 
import { Router } from 'react-router'; 

import alt from 'altInstance'; 
import routes from 'routes.jsx'; 
import injectTapEventPlugin from 'react-tap-event-plugin'; 
window.React = React; 
injectTapEventPlugin(); 

/* 
* Client side bootstrap with iso and alt 
*/ 
Iso.bootstrap((state, _, container) => { 
    alt.bootstrap(state); 
    ReactDOM.render(<Router history={createBrowserHistory()} children={routes} />, container); 
}); 
+0

Puoi condividere il codice come stai iniettando nel rendering? Quale versione del router stai usando? Dovresti passare createHistory() al router. – gca

+0

Sì, ecco qua, io creoBrowserHistory quindi dovrebbe andare bene. – Karan

+0

Ho imparato oggi, farlo con createMemoryHistory funziona perfettamente, tuttavia l'url non cambia, cioè se vai a localhost: 3000/e localhost: 3000/about mostrerà comunque il percorso indicizzato e puoi solo navigare da lì – Karan

risposta

1
<Route path="/" component={App}> 
    <IndexRedirect to='dashboard' /> 
    <Route path="dashboard" component={Dashboard} onEnter={requireAuth} /> 
    <Route path="about" component={About} /> 
    <Route path="profile" component={Profile} onEnter={requireAuth}/> 
    <Route path="login" component={LoginSignupPage} /> 
    <Route path="channels" component={Channels} /> 
</Route> 

modificare il percorso come questo può risolvere il tuo problema. il percorso "/" dovrebbe essere un percorso a livello di genitore di "accesso" ma non allo stesso livello

+0

didnt veramente sistemalo, così facendo hai anche modificato gli interruttori di tab in materiale ui e l'interfaccia utente, come se i percorsi stessero cambiando, ma nessuna delle cose grafiche si stava muovendo. Potrei ospitare questo su un sito reale se vuoi vedere come appare. – Karan

+0

Stavo pensando che il problema era causato dalla struttura del percorso, ora sembra non essere corretto. Mi sento anche confuso. -_- –

+0

Si prega di metterlo su un sito web. – hazardous