我有一个欢迎屏幕,我只想向用户显示一次。它起作用了,我使用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 />
);
发布于 2017-07-24 13:08:28
我相信这个警告是针对componentWillMount的使用。您应该在componentDidMount中调用_renderWelcomeSlidesWithAsyncStorage以确保您的应用程序已挂载。
https://stackoverflow.com/questions/45281394
复制相似问题