如何在React Native底部选项卡中有条件地更改屏幕按钮?

Fitim Zenuni

我有一个带有按钮A,B,C,D,E的底部标签。

  • 当我在屏幕A上时,我希望选项卡显示B,C,D,E按钮,而不显示按钮A。
  • 当我在屏幕B上时,我希望选项卡显示A,C,D,E按钮,而不显示按钮B。
  • 当我在其他屏幕上时,我想显示A,C,D,E按钮或B,C,D,E(取决于我选择A还是B)。

我已经在Google,stackoverflow,youtube上进行了搜索,但没有找到解决此问题的方法。

  • 我正在使用React Navigation v5

我已经尝试过很多方法,例如:

<Tab.Screen name="A" component={A}
   options={
     ()=>{
       tabBarButton:(props)=>{
         if(isScreen("A")){
            return null;
         }else{
            return <TouchableOpacity {...props}/>
         }
       }     
     }
   }
/>

<Tab.Screen name="B" component={B}
   options={
     ()=>{
       tabBarButton:(props)=>{
         if(isScreen("A")){
            return <TouchableOpacity {...props}/>
         }else{
            return null;
         }
       }     
     }
   }
/>

但这即使没有出错也不会给我正确的行为!!

如果你们不明白这个问题,请告诉我,我将使这个问题更具体。

如果您没有时间解释解决方案,请至少为我提供此用例的代码示例或文章。

PLZ帮助。

古拉帕兰(Guruparan Giritharan)

您将为此创建一个自定义选项卡栏,并有条件地显示标签。

您可以在以下网址查看自定义标签栏的参考:https://reactnavigation.org/docs/bottom-tab-navigator/#tabbar

您将必须创建如下所示的内容(我已经从文档中修改了示例代码)

function MyTabBar({ state, descriptors, navigation }) {

  //Condition to decide the tab or not
  const shouldDisplay = (label, isFocused) => {
    if (label === 'A' && isFocused) return false;
    else if (label === 'B' && isFocused) return false;
    else return true;
  };

  return (
    <View style={{ flexDirection: 'row' }}>
      {state.routes.map((route, index) => {
        const { options } = descriptors[route.key];
        const label =
          options.tabBarLabel !== undefined
            ? options.tabBarLabel
            : options.title !== undefined
            ? options.title
            : route.name;

        const isFocused = state.index === index;

        if (!shouldDisplay(label, isFocused)) return null;

        const onPress = () => {
          const event = navigation.emit({
            type: 'tabPress',
            target: route.key,
          });

          if (!isFocused && !event.defaultPrevented) {
            navigation.navigate(route.name);
          }
        };

        const onLongPress = () => {
          navigation.emit({
            type: 'tabLongPress',
            target: route.key,
          });
        };

        return (
          <TouchableOpacity
            accessibilityRole="button"
            accessibilityState={isFocused ? { selected: true } : {}}
            accessibilityLabel={options.tabBarAccessibilityLabel}
            testID={options.tabBarTestID}
            onPress={onPress}
            onLongPress={onLongPress}
            style={{ flex: 1 }}>
            <Text style={{ color: isFocused ? '#673ab7' : '#222' }}>
              {label}
            </Text>
          </TouchableOpacity>
        );
      })}
    </View>
  );
}

您可以在下面的小吃https://snack.expo.io/@guruparan/customtabs中查看代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在React Native底部选项卡中有条件地更改屏幕按钮?

来自分类Dev

如何在Ionics中有条件地隐藏和显示选项卡?

来自分类Dev

如何在React Native中有条件地从三个不同的选项进行渲染?

来自分类Dev

如何在WPF中有条件地更改按钮前景颜色?

来自分类Dev

如何有条件地将样式颜色应用于活动选项卡

来自分类Dev

如何在React Native Component中有条件地包含图像?

来自分类Dev

如何在Vuejs中有条件地渲染屏幕?

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

如何在Excel中有条件地匹配

来自分类Dev

如何在Excel中有条件地VLOOKUP?

来自分类Dev

如何在React Native底部选项卡中处理后退按钮行为?

来自分类Dev

如何在React JS中有条件地呈现错误?

来自分类Dev

如何在React中有条件地将布局应用于组件

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

在React Native的底部选项卡导航器中更改屏幕时如何更改图标以及文本的颜色?

来自分类Dev

在React中有条件地设置活动类

来自分类Dev

在React中有条件地添加HTML属性

来自分类Dev

在React中有条件地设置活动类

来自分类Dev

在 React 组件中有条件地渲染 <td>

来自分类Dev

如何检查id是否等于用户的id并在react js中有条件地显示按钮?

来自分类Dev

如何在列表项中有条件地更改rightIcon。我正在使用本机元素

来自分类Dev

如何在JQ中有条件地将字符串值更改为数字?

来自分类Dev

如何在React中有条件地将子组件添加到父组件?

来自分类Dev

如何在useEffect中更新状态的条件组件中有条件地渲染?

来自分类Dev

如何在React Native中的react选项卡导航中设置默认屏幕Route

来自分类Dev

React-Native Navigation v5:如何在特定屏幕上更改tabBarLabel或tabBarIcon以及选项卡的colorBackground?

来自分类Dev

如何有条件地更改安装按钮显示文本

来自分类Dev

React-native - 有条件地设置高度

来自分类Dev

如何在R中的数据框中有条件地选择列

Related 相关文章

  1. 1

    如何在React Native底部选项卡中有条件地更改屏幕按钮?

  2. 2

    如何在Ionics中有条件地隐藏和显示选项卡?

  3. 3

    如何在React Native中有条件地从三个不同的选项进行渲染?

  4. 4

    如何在WPF中有条件地更改按钮前景颜色?

  5. 5

    如何有条件地将样式颜色应用于活动选项卡

  6. 6

    如何在React Native Component中有条件地包含图像?

  7. 7

    如何在Vuejs中有条件地渲染屏幕?

  8. 8

    如何在Angular中有条件地渲染?

  9. 9

    如何在Excel中有条件地匹配

  10. 10

    如何在Excel中有条件地VLOOKUP?

  11. 11

    如何在React Native底部选项卡中处理后退按钮行为?

  12. 12

    如何在React JS中有条件地呈现错误?

  13. 13

    如何在React中有条件地将布局应用于组件

  14. 14

    如何在有条件的js中有条件地应用标题

  15. 15

    在React Native的底部选项卡导航器中更改屏幕时如何更改图标以及文本的颜色?

  16. 16

    在React中有条件地设置活动类

  17. 17

    在React中有条件地添加HTML属性

  18. 18

    在React中有条件地设置活动类

  19. 19

    在 React 组件中有条件地渲染 <td>

  20. 20

    如何检查id是否等于用户的id并在react js中有条件地显示按钮?

  21. 21

    如何在列表项中有条件地更改rightIcon。我正在使用本机元素

  22. 22

    如何在JQ中有条件地将字符串值更改为数字?

  23. 23

    如何在React中有条件地将子组件添加到父组件?

  24. 24

    如何在useEffect中更新状态的条件组件中有条件地渲染?

  25. 25

    如何在React Native中的react选项卡导航中设置默认屏幕Route

  26. 26

    React-Native Navigation v5:如何在特定屏幕上更改tabBarLabel或tabBarIcon以及选项卡的colorBackground?

  27. 27

    如何有条件地更改安装按钮显示文本

  28. 28

    React-native - 有条件地设置高度

  29. 29

    如何在R中的数据框中有条件地选择列

热门标签

归档