React Native禁用在TabNavigator中滑动StackNavigator

问题描述 投票:3回答:1

我有TabNavigator屏幕1和2以及屏幕1我有StackNavigator屏幕1.1和1.2。我已启用滑动和手势。从root用户我可以在1和2之间滑动选项卡。当我在屏幕1上并且我打开屏幕1.1时,我仍然可以滑动到屏幕2,这个能力我需要在1.1屏幕打开时以某种方式禁用。

我需要它像Instagram应用程序(ios)一样工作。当您在主屏幕(1)时,您可以向左滑动以查看直接屏幕(2)。当您从主屏幕(1)打开朋友个人资料时,它会将其打开为屏幕(1.1),您无法向左滑动以打开直接屏幕(2)。你只能回去。

我有这个功能工作得很好,但有这个“错误”,我可以从屏幕1.1导航到屏幕2。

我通过阅读文档和其他人的导航问题尝试了很多方法以不同的方式解决这个问题,但不知何故并没有真正按照我的需要工作。我想我的嵌套屏幕结构有什么问题,或者它以不同的方式解决了。

有人有线索吗?

reactjs react-native react-navigation
1个回答
7
投票

选项卡中的每个屏幕都可以单独设置导航选项swipeEnabled

看看Tab Navigator Screen Navigation Options文档。

MyScreen.navigationOptions = ({navigation}) => ({
  swipeEnabled: false
});

您可以将该值设置为检查堆栈导航器是否已导航的函数的结果。

更新 - 反应导航3

该属性已被删除,并替换为gesturesEnabled。 您可以单独设置每个屏幕的值,也可以在导航器配置级别设置默认值。

const navigator = createStackNavigator(
  {
    Main: { screen: Main },
    ...
  },
  {
    defaultNavigationOptions: {
      gesturesEnabled: false,
    },
    ...
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.