私の主なコンポーネントをロードする必要があり、対地価値が "logged:true"のlocalstorageが存在する場合、react-routerを使用して "/ app"にリダイレクトされます。私が反応し、Reduxの使用していますが、これは私のコードであるcomponentDillMountのcomponentWillMountのRedux状態の変更が認識されませんか?
:
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>
);
}
}
マイReduxのアクション:
checkLogStatus() {
// check if user is logged and set it to state
return {
type: LOGIN_STATUS,
payload: window.localStorage.sugarlockLogged === "true"
};
}
しかし、コンポーネントがcomponentDidMount段階になったとき、私のReduxの状態はまだありません更新されました。
componentWillReceiveProps(nextProps){
if (nextProps.logStatus.logged && nextProps.logStatus.logged !== this.props.logStatus.logged){
hashHistory.push('/app');
}
}
しかし、私はそれが最もエレガントな解決策であることを確認していない:
Yは、使用して動作するようにこれを取得するために管理します。
ありがとうございます!