Ich habe eine Login-Seite, in der ich componentWillReceiveProps
verwende, um auf die nächste Seite zu gelangen. Aber die state
, die ich innerhalb componentWillReceiveProps
setze, scheint nicht zu setzen.this.setState() funktioniert nicht in componentWillReceiveProps
Das ist mein componentWillReceiveProps
Methode:
componentWillReceiveProps(nextProps) {
if (nextProps.isAuthenticated === true) {
browserHistory.push('/home');
} else {
console.log("this.props :::" + JSON.stringify(this.props))
console.log("this.state :::" + JSON.stringify(this.state))
console.log("nextProps :::" + JSON.stringify(nextProps))
this.setState({
errorMessage: nextProps.authenticationError
})
console.log("this.state :::" + JSON.stringify(this.state))
}
}
Die console output
ich immer bin, ist dies:
this.props :::{"authenticationError":null}
this.state :::{"username":"35135","password":"3135","errorMessage":""}
nextProps :::{"isAuthenticated":false,"authenticationError":"Could not find user in DB."}
this.state :::{"username":"35135","password":"3135","errorMessage":""}
hier auch nach dem Zustand zu versetzen, hat sich mein Zustand nicht verändert.
Bitte sagen Sie mir, was ich falsch mache.
EDIT: Ich habe diese Komponente, die ErrorText
ist, die die errroMessage
Eigenschaft übernimmt.
<ErrorText errorMsg={this.state.errorMessage}></ErrorText>
Wenn ich 'componentDidUpdate' verwende, wird es die Komponente dann wieder rendern? – v1shnu
Sie sollten den neuen Zustand in 'componentDidUpdate' oder in' render' überprüfen. Die allgemeine Bedeutung ist: unmittelbar nach dem Aufruf von 'setState' wird der Status nicht aktualisiert. –
Eigentlich mein Anwendungsfall ist dies: Wenn mein Benutzer gefunden wird, umadressiere ich, wenn nicht, werde ich die Fehlermeldung in meinem Zustand einstellen. Ich bin mir sicher, dass 'componentWillReceiveProps' erneut rendern wird. Aber ich möchte wissen, ob 'componentDidUpdate' update' 'selbst rendern kann, oder ob ich' forceUpdate() 'oder etwas ähnliches verwenden soll. – v1shnu