【问题标题】:hide tabBar on screens using drawer + tabs + stack使用抽屉 + 选项卡 + 堆栈在屏幕上隐藏 tabBar
【发布时间】:2020-12-11 09:55:56
【问题描述】:

我想在某些屏幕中隐藏标签栏,更准确地说是在每个标签的主屏幕之后的屏幕中。

我正在使用 reac 导航 5 用钩子反应原生

我有以下布局,我正在使用抽屉、选项卡和堆栈。

我希望标签栏在用户停在购物车标签时正常显示,但是当用户单击将他带到购物车堆栈的另一个屏幕的按钮时,我希望标签栏不再显示可见。

也就是说,只有在标签的主屏幕中,标签栏存在,在其他屏幕中,它不应该。

这种行为对 Home 来说是令人满意的,但在其他选项卡中却不是。

我非常感谢任何帮助,我收到了 cmets、建议以及任何使此导航分布更好的东西。

【问题讨论】:

    标签: react-navigation react-native-navigation react-navigation-v5


    【解决方案1】:

    我已通过以下方式在我的应用中完成此操作:

      import { useFocusEffect } from '@react-navigation/native';
    
      { ... }
    
      // Hide parent tab bar on focus
      useFocusEffect(
        useCallback(() => {
          // Do something when the screen is focused
          const parent = dangerouslyGetParent();
          if (parent) {
            parent.setOptions({
              tabBarVisible: false,
            });
          }
    
          return () => {
    
          };
        }, [dangerouslyGetParent]),
      );
    

    不过要小心。为了在使用navigation.pop() 或导航回上一个屏幕时真正发挥作用,您需要将相同的代码添加到要确保显示选项卡栏的组件中,因为这会修改导航器配置本身。因此,您只需在使用上述代码子tabBarVisible: true

    从禁用的标签栏屏幕导航到的屏幕中执行相同操作

    我在挖掘时还没有真正找到更好的研究方法。会喜欢其他更优雅的解决方案,但这至少可以帮助您入门并且功能正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2020-09-12
      • 2020-12-16
      • 2022-01-20
      • 1970-01-01
      • 2015-10-08
      • 2021-06-06
      相关资源
      最近更新 更多