ich eine gerade foward Login-Seite habe, die einen api-Dienst ruft die Benutzeranmeldung zu überprüfen:ReactJs - Warnung bei Seite nach erfolgreicher Anmeldung Übergang aus
Login.js
@connect(
state => ({user: state.auth.user}),
authActions)
class Login extends React.Component {
......
_handleSubmit = (event) => {
.....
this.props.login({username: username.value, password: password.value},
(result) => {
return result;
});
......
};
render() {
const {user, logout} = this.props;
return (
<section>
{
!user ?
... Show login page with submit button .....
: this.context.router.replace('/')
}
</section>
)
}
};
Während die Komponente funktioniert wie beabsichtigt, erhalte ich die Warnung:
nicht während einer bestehenden Zustandsübergang (wie inaktualisieren können
render
oder der Konstruktor einer anderen Komponente). Render-Methoden sollten eine reine Funktion von Requisiten und Zustand sein; Konstruktor Nebenwirkungen sind ein anti-Muster, können aber
Ich weiß, dass die Warnung aufgrund des ersetzen Zustand des Routers componentWillMount
bewegt werden, aber ich weiß nicht, was der beste Weg wäre, verhindern Sie diese Warnung und erreichen Sie immer noch das Ziel, sich von der Anmeldeseite zu entfernen, wenn der Benutzer existiert.
Irgendwelche Ideen?
UPDATE
Abdud Dayan Adeeb die Lösung hatte .....
componentWillReceiveProps(nextProps) {
if (nextProps.user) this.context.router.replace('/')
}
den Code bewegen sollten in componentWillUnmount platziert werden – Teo