1
需要加載我的主要組件,並且如果使用react-router將對值「logged:true」的本地存儲重定向到「/ app」。componentWidMount中的Redux狀態更改在componentDidMount中無法識別?
我使用的反應,終極版,這是我的代碼:
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>
);
}
}
我的終極版動作:
checkLogStatus() {
// check if user is logged and set it to state
return {
type: LOGIN_STATUS,
payload: window.localStorage.sugarlockLogged === "true"
};
}
但是,當組件獲得的componentDidMount階段,我的終極版狀態到現在還沒有已更新。
Ÿ設法得到這種利用工作:
componentWillReceiveProps(nextProps){
if (nextProps.logStatus.logged && nextProps.logStatus.logged !== this.props.logStatus.logged){
hashHistory.push('/app');
}
}
但我不知道這是最好的解決方法。
提前致謝!