组件上更改状态错误将被卸载

时间:2019-02-12 08:39:00

标签: react-native

我有一个类组件,用户可以用来更改应用程序的语言,我添加了此屏幕来创建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
      }   
    })

1 个答案:

答案 0 :(得分:0)

该错误表明您正在尝试在已卸载的组件上使用setState。该错误试图通过指示在卸载组件时应取消可能导致setState的所有异步操作来帮助您,而不是表明componentWillUnmount方法中存在错误。查看堆栈跟踪,找到错误的根源。