Как избежать SetState в componentWillMount
У меня есть экран приветствия, который я хочу показать пользователям только один раз. Это работает, я использую AsyncStorage, чтобы сохранить токен. Это меняет состояние ShowWelcomeSlides, поэтому я могу сделать условие. Но у меня есть сообщение об ошибке. Я действительно не знаю, где я могу обновить состояние, если не в componentWillMount. Любая идея?
Предупреждение. Может обновлять только смонтированный или монтируемый компонент. Обычно это означает, что вы вызвали setState, replaceState или forceUpdate для несмонтированного компонента. Это неоперация.
componentWillMount() {
this._renderWelcomeSlidesWithAsyncStorage().done();
}
_renderWelcomeSlidesWithAsyncStorage = async () => {
let value = await AsyncStorage.getItem('AlreadyVisited');
if (value==='true'){
this.setState({ShowWelcomeSlides: 'false'});
console.log('token is present')
}else{
this.setState({ShowWelcomeSlides: 'true'});
console.log('token is not present');
this._setValue();
}
};
onSlidesComplete = () => {
this.props.navigation.navigate('Home');
}
render(){
if (this.state.ShowWelcomeSlides==='true'){
return(
<Slides data={SLIDE_DATA} onComplete={this.onSlidesComplete} />
);
}return(
<SkipWelcome />
);
1 ответ
Я считаю, что предупреждение касается использования componentWillMount. Вы должны вызвать _renderWelcomeSlidesWithAsyncStorage в componentDidMount, чтобы убедиться, что ваше приложение смонтировано.