所以在加载组件时,我想检查变量,如果该变量存在,我想停止加载该组件并将它们重定向回主页。我有下面的代码,但我得到一个堆栈跟踪错误,因为重定向用户的组件仍在尝试加载
class Repo extends Component {
constructor(props) {
super(props);
this.state = {
repo: {}
};
}
componentWillMount() {
if (localStorage.getItem('login'))
this.props.history.push('/');
}
}
思想?
答案 0 :(得分:1)
如果该变量存在,您可以只渲染React Router <Redirect>
组件。这些方面的东西。
render() {
if (localStorage.getItem('login')) {
return (
<Redirect to={{
pathname: '/',
state: { from: routeProps.location }
}}/>
);
} else {
// Normal rendering here.
}
}
答案 1 :(得分:0)
如果将逻辑移至componentDidMount
,则应该有效。