首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应原生removeEventListener onPress

反应原生removeEventListener onPress
EN

Stack Overflow用户
提问于 2018-04-17 11:13:47
回答 1查看 6.6K关注 0票数 0

我有这样的代码,在我的应用程序的一个屏幕上,安卓设备上的后退按钮被禁用,当我切换到另一个屏幕时,后退按钮在componentWillUnmount中再次启用,但是如果我按下下面的按钮移动到另一个屏幕,它不会运行componentWillUnmount,所以我决定将removeEventListener添加到onPress中。由于某些原因,这不起作用,如果我按下按钮,它就会导航到我的另一个屏幕,但是它不会删除事件侦听器。

还:是的,我也尝试过将代码放在onPress中它自己的函数中,这没有什么区别,但是它仍然切换了屏幕,但是没有重新启用back按钮。

代码语言:javascript
复制
componentWillMount()
{
  BackAndroid.addEventListener('hardwareBackPress', () => {return true});
}

componentWillUnmount()
{
  BackAndroid.removeEventListener('hardwareBackPress');
}

render(){
  return(
    <Button 
      style={styles.button} 
      onPress={() => {BackAndroid.removeEventListener('hardwareBackPress'); this.props.navigation.navigate('home');}}>
    </Button>
  );
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 11:28:54

BackAndroid.addEventListener和BackAndroid.removeEventListener的签名不一样。因此,hardwareBackPress还没有在ComponentWillUnmount中被删除。请试试这样的东西:

代码语言:javascript
复制
constructor() {
   this._onBack = this._onBack.bind(this)
}
_onBack() {
   return true;
}

componentWillMount()
{
  BackAndroid.addEventListener('hardwareBackPress', this._onBack);
}

componentWillUnmount()
{
  BackAndroid.removeEventListener('hardwareBackPress', this._onBack);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49876602

复制
相关文章

相似问题

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