react-native-tab-view - 隐藏特定的标签栏选项卡(不是场景)

react-native-tab-view - hide a specific tabbar tab (not the scene)

我想知道以下是否可行...

我有一个 react-native-tab-view 的实例 这下面有 3 个场景,但我只想在选项卡栏本身上显示其中 2 个是可选的。第三个场景实际上在那里,但隐藏起来,直到发生事件时自动显示(几秒钟)。

所以,我想要 UI 的以下内容:

这可能吗?

您可以覆盖 renderTabBar 方法并创建您自己的方法

我的解决方案是更改 renderTabBar 我的实施方法以仅显示带有标题的选项卡。此外,如果我想临时显示 'hidden' 选项卡,这也有效,因为我可以在需要显示时动态更新它的标题。

renderTabBar(props: *) {
    const { index, routes } = props.navigationState;
    const currRoute = routes[index];
    const navigationState = {
      index: currRoute.title==='' ? routes.length : index,
      routes: routes.filter(route => route.title!=='')
    };
    const jumpToIndex = i => props.jumpToIndex(routes.indexOf(navigationState.routes[i]));

    return (
      <TabBar
        ...
        navigationState={navigationState} 
        jumpToIndex={jumpToIndex}
      />
    );
  }

我的解决方案是在返回 TabBar 之前更改 props.navigationState.routes。它将隐藏没有标题的选项卡,同时仍然可以导航。

 return (
        <TabView
            navigationState={{
                index,
                routes
            }}
            renderScene={renderScene}
            onIndexChange={setIndex}
            initialLayout={{ width: layout.width, height: layout.height }}
            tabBarPosition={'bottom'}
            renderTabBar={(props) => {
                props.navigationState.routes = routes.filter(
                    (route) => route.title
                ) 
                return (
                    <TabBar
                        {...props}
                        style={}
                        renderLabel={({ route, focused }) => (
                                <Text style={} accessibilityLabel={} >
                                    {route.title}
                                </Text>
                            )
                        
                        labelStyle={}
                    />
                )
            }}
        />
    )