Я использую реагирующий npm, с управлением состоянием "mobx-реагировать", все общие состояния в "AppStore".Когда приложение обновило «AppStore.signIn ()», получило пользователя из localstorage и установило «AppStore.signedUser», иначе значение не определено.Компонент отображает пользователя, если он существует, но если нет, приложение должно перенаправить на «/ signup» перед отображением.Поскольку приложение рендерится быстрее, чем требуется для входа в систему, оно всегда перенаправляет на регистрацию при обновлении, даже если пользователь уже существует.Как я могу перенаправить только после того, как AppStore.signIn () сделано?
import React, { Component } from 'react';
import { observer } from 'mobx-react';
import AppStore from './store/AppStore';
class App extends Component {
state = {
isLogged: false,
isCheckedLogged: false,
}
async componentWillMount() {
await AppStore.signIn();
if (AppStore.signedUser) {
this.setState({ isLogged: true });
} else {
this.setState({ isLogged: false });
}
this.state.isCheckedLogged = true;
}
render() {
return (
<div className="App">
<HashRouter>
<nav className="main-nav">
<NavLink exact to="/" className="nav-link">Home</NavLink>
<NavLink to="/signup" className="nav-link">Signup</NavLink>
</nav>
<Switch>
<Route exact path="/" render={() => this.state.isLogged ?
(<Home store={AppStore} history={HashRouter} />) :
(<Redirect to="/signup"/>)} />
<Route exact path="/signup" render={() =>
(<Signup store={AppStore} history={HashRouter} />)} />
</Switch>
</HashRouter>
</div>);
}
}
export default observer(App);