是否有一个 onPress for TabNavigator 选项卡在反应导航中



当用户点击TabNavigator中的最后一个选项卡(例如"更多")时,我正在尝试使用抽屉导航器。

这怎么可能实现它,而没有该选项卡的屏幕,然后在组件将挂载中调用抽屉导航器。

componentWillMount() {
   this.props.navigation.navigate("DrawerOpen") 
}

我认为这是一种黑客,这不是正确的解决方案(这样加载了"更多"屏幕),必须有更好的解决方案。

这也是一个黑客,但我认为这是最简单的黑客,不使用自定义 TabBar 或 redux。

您可以做的是创建一个呈现空的屏幕组件

export default class More extends Component {
  render() {
    return null;
  }
}

然后将此屏幕添加到您的TabNavigator,从反应导航导入 TabBars 并切换抽屉以获取某些索引。

import { TabBarBottom, TabBarTop } from 'react-navigation';
const TabBar = Platform.OS === 'ios' ? TabBarBottom : TabBarTop;
const Navigator = TabNavigator({
  Tab1: { screen: Tab1 },
  Tab2: { screen: Tab2 },
  Tab3: { screen: Tab3 },
  More: { screen: More }
}, {
  tabBarComponent: ({jumpToIndex, ...props, navigation}) => (
        <TabBar
            {...props}
            jumpToIndex={index => {
                if (index === 3) {
                    navigation.navigate('DrawerToggle'); //Toggle drawer
                }
                else {
                    jumpToIndex(index)
                }
            }}
        />
    )
});

通过这种方式,您只需继续使用反应导航中的默认 TabBars,为您的抽屉设置一个图标/标签,并使用它来切换抽屉。

您需要为 TabNavigator 实现自定义tabBarComponent。这是您在选项中提供的普通组件。

然后在组件中,您只需为"更多"按钮定义onPress,这将打开抽屉。

就这么简单。

相关内容

  • 没有找到相关文章

最新更新