Ich möchte den Benutzer auf die Anmeldeseite umleiten, sie versuchen, auf einen Endpunkt zuzugreifen, der Authentifizierung erfordert, aber ich möchte die Seite, auf die sie zugegriffen haben, einmal zu speichern sie loggen sich ein, ich kann sie auf diese Seite umleiten. In den älteren Versionen von Router reagieren, ich glaube, Sie in der Lage waren, dies zu tun, einen Wrapper (Beispiel aus auth0 genommen) mit:React Router, wie Übergang zu speichern und Redirect bei erfolgreicher Anmeldung
export default (ComposedComponent) => {
return class AuthenticatedComponent extends React.Component {
static willTransitionTo(transition) {
// This method is called before transitioning to this component. If the user is not logged in, we’ll send him or her to the Login page.
if (!LoginStore.isLoggedIn()) {
transition.redirect('/login', {}, {'nextPath' : transition.path});
}
}
...
}
}
Und dann in der Aktion, die auf erfolgreiche Authentifizierung mit der API aufgerufen wird:
loginUser: (jwt) => {
var savedJwt = localStorage.getItem('jwt');
AppDispatcher.dispatch({
actionType: LOGIN_USER,
jwt: jwt
});
if (savedJwt !== jwt) {
var nextPath = RouterContainer.get().getCurrentQuery().nextPath || '/';
RouterContainer.get().transitionTo(nextPath);
localStorage.setItem('jwt', jwt);
}
}
ich weiß, dass in dem neuen Router API reagiert, kann der erste Teil mit
router.push({ pathname, query, state })
jedoch getan werden, wo ist der Ort, um den Zustand zugreifen (in diesem Fall nextPath
)? Ich glaube, die getCurrentQuery
Funktion auf dem Router ist veraltet