Я не могу изменить состояние после получения ответа от axios get request
Это для простой страницы входа / регистрации с использованием стека MERN, где я пытаюсь получить доступ к персонализированной странице пользователя только после авторизации его на бэкэнде node.js.
Я попробовал метод, который является общим с использованием _ismounting, но после некоторой отладки я увидел, что метод componentWillMount вызывается сразу после получения axios, который затем делает _isMounting как false, следовательно, не входит в код if, где я использую setState
class User extends Component {
_isMounted = false;
constructor(props){
super(props)
this.state={
isAuthenticated:false
}
}
componentDidMount(){
this._isMounted = true;
const token=localStorage.getItem("token");
//alert(token);
axios
.get(`https://localhost:3443/users/${this.props.user}`,{ headers: { Authorization: `Bearer ${token}` } })
.then(res => {
if (this._isMounted){
this.setState(() => ({
isAuthenticated:true
}));
}
})
.catch(err => alert(JSON.stringify(err)));
}
componentWillUnmount() {
this._isMounted = false;
}
render() {
if(this.state.isAuthenticated===false) return(<Redirect to="/home" />)
return(
<div>
Hello {this.props.user}
</div>
);
}
}
Я просто хочу выполнить axios get до отображения страницы, чтобы проверить, авторизован пользователь или нет, и соответственно изменить состояние.