首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在componentWillMount中避免SetState

如何在componentWillMount中避免SetState
EN

Stack Overflow用户
提问于 2017-07-24 21:03:30
回答 1查看 484关注 0票数 0

我有一个欢迎屏幕,我只想向用户显示一次。它起作用了,我使用AsyncStorage来保存令牌。它改变了ShowWelcomeSlides的状态,所以我可以创建一个条件。但我有一个错误消息。如果不是在componentWillMount中,我真的不知道在哪里可以更新状态。有什么想法吗?

警告:只能更新已安装或正在安装的组件。这通常意味着您在未挂载的组件上调用setState、replaceState或forceUpdate。这是个禁区。

代码语言:javascript
复制
  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 />
    );
EN

回答 1

Stack Overflow用户

发布于 2017-07-24 21:08:28

我相信这个警告是针对componentWillMount的使用。您应该在componentDidMount中调用_renderWelcomeSlidesWithAsyncStorage以确保您的应用程序已挂载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45281394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档