react-native – React Native – 设备后退按钮处理

我想检查当设备后退按钮被击中时是否有多个屏幕在堆栈上.如果是,我想显示一个屏幕,如果没有,我想退出应用程序.

我已经检查了一些示例,但是那些使用了BackAndroid和Navigator.但他们俩都被弃用了. BackHandler是BackAndroid的替代品.我可以使用props.navigation.goBack(null)显示一个屏幕.

但是我无法找到用于在堆栈中查找屏幕计数的代码.我不想使用已弃用的Navigator!

此示例将向您显示通常在大多数流程中预期的返回导航.您必须根据预期的行为向每个屏幕添加以下代码.有2种情况:
1.如果堆叠屏幕超过1个,设备后退按钮将显示一个屏幕.
2.如果堆叠中只有一个屏幕,设备后退按钮将退出应用程序.

案例1:显示一个屏幕

import { BackHandler } from 'react-native';

constructor(props) {
    super(props)
    this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
}

componentwillMount() {
    BackHandler.addEventListener('hardwareBackPress',this.handleBackButtonClick);
}

componentwillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress',this.handleBackButtonClick);
}

handleBackButtonClick() {
    this.props.navigation.goBack(null);
    return true;
}

重要提示:不要忘记在构造函数中绑定方法删除co​​mponentwillUnmount中的侦听器.

案例2:退出应用程序

在这种情况下,无需在要退出应用程序的屏幕上处理任何内容.

重要提示:这应该只是堆栈屏幕.

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...