我有一个类组件,用户可以用来更改应用程序的语言,我添加了此屏幕来创建Stack导航器,我的问题是当我导航到它时,控制台显示错误提示:
警告:无法在已卸载的组件上执行React状态更新。 这是空操作,但它表明应用程序中发生内存泄漏。 要修复,请取消所有订阅和异步任务 componentWillUnmount方法。
我没有看到我正在调用的组件将卸载,请您帮忙,这是我的代码:
class Languages extends Component {
constructor(props) {
super(props);
this.state = {
loc : null
};
}
onChangeLan(lanz) {
this.setState({ loc : lanz})
this.props.languaje(lanz.locale)
}
render() {
return (
<View style = { styles.contianer}>
{
Langua.map( (lan) =>{
return (
<ListItem
key = {lan.id}
title= {lan.name}
onPress = { this.onChangeLan.bind(this,lan)}
/>
)
})
}
<Text>{I18n.t('login')}</Text>
</View>
);
}
}
const mapStateToProps = state =>{
return {
language : state.lan.locale
}
}
export default connect(mapStateToProps,{languaje})(Languages);
const styles = StyleSheet.create({
contianer : {
flex: 1
}
})
答案 0 :(得分:0)
该错误表明您正在尝试在已卸载的组件上使用setState
。该错误试图通过指示在卸载组件时应取消可能导致setState
的所有异步操作来帮助您,而不是表明componentWillUnmount
方法中存在错误。查看堆栈跟踪,找到错误的根源。