Как избежать 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, чтобы убедиться, что ваше приложение смонтировано.

Другие вопросы по тегам