【问题标题】:react-native material top tab navigator swipe disable depending on screens反应原生材料顶部选项卡导航器滑动禁用取决于屏幕
【发布时间】:2020-08-27 07:45:17
【问题描述】:

想要只禁用地图组件滑动,但使用“swipeEnabled”时会应用整个屏幕。

我该怎么办?

const Tab = createMaterialTopTabNavigator();

const Tabs = () => {

  return (
    <Tab.Navigator
      swipeEnabled={false}  // <- Screens can be swiped but it is applied to every screen.
      {...}
    >
      <Tab.Screen
        name="Home"
        component={Home}
      />
      <Tab.Screen
        name="Map"
        component={Map}
      /> 
    </Tab.Navigator>
  );
}

const App = () => {
  return (
    <NavigationContainer>
      <SafeAreaView style={styles.safeAreaView} />
      <Tabs />
    </NavigationContainer>
  );
}

【问题讨论】:

    标签: react-native react-navigation


    【解决方案1】:

    如果您在 Map 屏幕上,您可以将状态值传递给 swipeEnabled 并将值更新为 false,如下所示:

    const Tab = createMaterialTopTabNavigator();
    
    const Tabs = () => {
      const [swipeEnabled, setSwipeEnabled] = useState(true);
      return (
        <NavigationContainer>
          <Tab.Navigator
            swipeEnabled={swipeEnabled}
            screenOptions={({ navigation, route }) => {
              if (route.name === 'Map' && navigation.isFocused()) {
                setSwipeEnabled(false);
              } else if (route.name !== 'Map' && navigation.isFocused()) {
                setSwipeEnabled(true);
              }
            }}>
            <Tab.Screen name="Home" component={Home} />
            <Tab.Screen name="Map" component={Map} />
          </Tab.Navigator>
        </NavigationContainer>
      );
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2020-09-28
      • 2022-10-07
      • 2022-08-18
      相关资源
      最近更新 更多