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);
});
Puoi condividere il codice come stai iniettando nel rendering? Quale versione del router stai usando? Dovresti passare createHistory() al router. –
gca
Sì, ecco qua, io creoBrowserHistory quindi dovrebbe andare bene. – Karan
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