brauchten meine Hauptkomponente und eine local mit dem Paar Wert zu laden, falls „angemeldet: true“ existiert mit reagieren-Router „/ app“ umleiten.Redux-Statusänderung in ComponentWillMount wird in ComponentDidMount nicht erkannt?
Ich reagiere-redux bin mit und dies ist mein Code:
class Main extends Component {
componentWillMount(){
// Return true in redux state if localstorage is found
this.props.checkLogStatus();
}
componentDidMount(){
// redirect in case redux state returns logged = true
if(this.props.logStatus.logged){
hashHistory.push('/app');
}
}
render() {
return (
<App centered={true} className="_main">
{this.props.children}
</App>
);
}
}
Meine Redux Aktion:
checkLogStatus() {
// check if user is logged and set it to state
return {
type: LOGIN_STATUS,
payload: window.localStorage.sugarlockLogged === "true"
};
}
Aber wenn die Komponente der componentDidMount Bühne bekommt, mein redux Staat hat nicht noch wurde aktualisiert.
Y verwaltet dies durch die Verwendung zur Arbeit kommen:
componentWillReceiveProps(nextProps){
if (nextProps.logStatus.logged && nextProps.logStatus.logged !== this.props.logStatus.logged){
hashHistory.push('/app');
}
}
Aber ich bin nicht sicher, ob es die eleganteste Lösung ist.
Vielen Dank im Voraus!