【问题标题】:BackHandler does not go back more than 1 screenBackHandler 不会返回超过 1 个屏幕
【发布时间】:2017-07-18 11:19:22
【问题描述】:

我的每个屏幕上都有这段代码。按下 android 后退按钮返回 1 个屏幕。再次按下 android 后退按钮不会执行任何操作。只要堆栈中有更多屏幕,预期的结果就是继续返回。缺少什么?

componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', () => {
        this.props.navigation.goBack();
        return true;
    });
}

componentWillUnmount() {
  BackHandler.removeEventListener('hardwareBackPress')
}

【问题讨论】:

    标签: react-native react-navigation


    【解决方案1】:

    经过反复试验,此代码按预期工作。我相信我的初始代码实际上并没有删除事件监听器。

    componentWillMount() {
        BackHandler.addEventListener('hardwareBackPress', this.backPressed);
    }
    
    componentWillUnmount() {
        BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
    }
    
    backPressed = () => {
        this.props.navigation.goBack();
        return true;
    }
    

    【讨论】:

    • 我收到错误消息“无法读取未定义的属性导航”。可能是什么问题?
    • 如果你使用 react-navigation 尝试像他们在文档中那样设置它。 reactnavigation.org/docs/guides/…
    • return true 有什么用处?我和你有同样的问题,添加它为我解决了它......
    • @AlexandreRivest 根据BackHandler定义中的注释:Detect hardware back button presses, and programmatically invoke the default back button functionality to exit the app if there are no listeners or if none of the listeners return true.
    • @JustinLok 我在我想通过按钮返回的屏幕类中实现了三个功能...单击按钮,但是没有任何反应(从应用程序和以前一样,这很好)我向this. props.navigation 发出警报,并包含一个空的“Actions”数组和带有与屏幕相同名称的 Key 和 RouteName 的“State”数组......官方文档很差,不明白app里面有没有需要的东西。 js来管理一切或其他任何地方......我希望你能帮助我:-)
    猜你喜欢
    • 2018-08-13
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多