我正常从屏幕 A 导航到屏幕 B
我想将屏幕 B 作为应用程序的根目录/导航应忽略屏幕 A 并将屏幕 B 作为根目录
因此在屏幕 B 中,当用户点击 Android 导航返回时,它应该最小化应用程序 不返回屏幕A
这是我在屏幕 B 中的代码
BackHandler.addEventListener("hardwareBackPress" , () => {
BackHandler.exitApp();
});
当我按下 Android 后退按钮时
实际结果
它最小化应用程序,当我再次打开它时,它显示屏幕A
预期结果
它应该只最小化应用程序,当我再次打开它时,它会显示相同的屏幕B
顺便问一下,有什么方法可以将屏幕作为根,而不是手动放置这么多监听器并使事情变得复杂吗?
更正确的含义是,以编程方式更改根屏幕,因为 React Navigation 仅初始化它,以后无法更改它
示例
const RootNavigator = createSwitchNavigator(
{
ScreenA : ScreenA,
ScreenB : ScreenB
},
{
initialRouteName: 'ScreenA' // I mean here
}
);
如果我想在 ReactNavigation 初始化后在运行时更改这个initialRouteName,该怎么办
返回 true 以防止默认后退行为,并在 useFocusEffect 中添加此事件侦听器,以确保当我们更改屏幕时它重置为默认值,因为 addEventListener 已全局注册
useFocusEffect(() => {
let onBackPress = () => {
BackHandler.exitApp()
true
}
let _ = BackHandler.addEventListener(#hardwareBackPress, onBackPress)
Some(() => BackHandler.removeEventListener(#hardwareBackPress, onBackPress))
})
这段代码是用rescript写的