【发布时间】:2017-12-30 02:05:17
【问题描述】:
我有一个欢迎屏幕,我只想向用户显示一次。它工作我使用 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 />
);
【问题讨论】:
-
异步就可以了
-
好的,我可以继续使用该应用程序,不会造成问题?
-
根据我的经验,当您的异步方法完成并且正在卸载组件时会出现此警告。这可能是一个难以追踪的情况,因为从 UI 的角度来看,似乎一切正常。我会检查您的流程并确保组件没有在某处安装和卸载。
标签: reactjs react-native setstate