防止从屏幕 B 导航到 A 时卸载

问题描述 投票:0回答:2

所以我的问题是:当使用 React Navigation 时,当用户导航到屏幕 A 时,A 被挂载。当用户转到屏幕 B 时,B 已安装,A 保持安装状态。当用户导航回 A 时,B 变为未安装状态,但 A 保持安装状态。

这是预期的,根据文档.

我希望 B 保持安装状态。这可能吗?如果是,那又如何?

const ThisStack = createStackNavigator(
  {
    A: {
      screen: ScreenA,
      navigationOptions: ({ navigation }) => ({
        headerLeft: <HamburgerMenuButton navigation={navigation} />,
      }),
    },
    B: {
      screen: ScreenB,
    },
  },
  {
    initialRouteName: 'FOO',
    headerMode: 'screen',
    defaultNavigationOptions: navigationOptions,
  }
);

我为什么要安装这个?

好吧,我必须使用一个名为 Reactive 的包。 Reactive 有一个名为

<ReactiveComponent />
的基本组件,当它被卸载时,它会调用一个
removeComponent
函数,我试图阻止它发生。

似乎 Reactive 并不是为了在不同的屏幕上使用而创建的,但为了实现我想要完成的目标,我需要以这种方式使用它。

reactjs react-native react-navigation
2个回答
0
投票

这很容易。您目前正在使用

StackNavigation
,它的工作原理是将屏幕彼此叠加并在不再需要时卸载它们。另一方面,如果您只是想在不同屏幕之间导航而不卸载它们,则还有许多其他导航选项可供您选择。例如,
TabNavigation
,
DrawerNavigation
SwitchNavigator
, 等等。或者您甚至可以使用
navigator
.
 构建您自己的 
react-navigation

这里我使用

switchNavigator
,它通常用于身份验证流程,即登录用户或注销用户。

const ThisStack = createSwitchNavigator(
  {
    A: {
      screen: ScreenA,
      navigationOptions: ({ navigation }) => ({
        headerLeft: <HamburgerMenuButton navigation={navigation} />,
      }),
    },
    B: {
      screen: ScreenB,
    },
  },
  {
    initialRouteName: 'FOO',
    headerMode: 'screen',
    defaultNavigationOptions: navigationOptions,
  }
);

我所做的只是简单地使用

createSwitchNavigator
而不是
createStackNavigator
。让我知道这是否适合你


0
投票

我面临着同样的问题,你得到解决方案了吗:(

© www.soinside.com 2019 - 2024. All rights reserved.