我想检查当按下设备后退按钮时是否有多个屏幕在堆栈上。如果是,我想显示上一个屏幕,如果否,我想退出应用程序。
我已经检查了一些例子,但那些使用BackAndroid
and Navigator
。但它们都已被弃用。BackHandler
是替代BackAndroid
。我可以使用显示上一个屏幕props.navigation.goBack(null)
.
但我无法找到用于在堆栈中查找屏幕计数的代码。我不想使用已弃用的Navigator
!
此示例将向您展示大多数流程中通常预期的后退导航。您必须根据预期行为将以下代码添加到每个屏幕。有2种情况:
1. 如果堆栈上有超过 1 个屏幕,设备后退按钮将显示上一个屏幕。
2. 如果堆栈上只有 1 个屏幕,设备后退按钮将退出应用程序。
情况 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;
}
重要的:不要忘记在构造函数中绑定方法并在 componentWillUnmount 中删除侦听器。
案例2:退出应用程序
在这种情况下,无需在要退出应用程序的屏幕上处理任何内容。
重要的:这应该是堆栈上的唯一屏幕。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)