首页 > 解决方案 > 最小化反应原生应用程序而不返回

问题描述

我从屏幕 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 怎么办

标签: androidreact-nativereact-navigation

解决方案


如果您需要将 initialRouteName 设置为道具,那是因为在呈现应用导航之前需要异步获取一些数据。处理此问题的另一种方法是使用 switchnavigator 并在获取异步数据时显示一个屏幕,然后在必要时使用参数导航到适当的初始路由。有关这方面的完整示例,请参阅文档

这是一个开放的RFC


推荐阅读