这也是一种 hack,但我认为它是不使用自定义 TabBar 或 redux 的最简单的 hack。
你可以做的是创建一个屏幕组件渲染 null
export default class More extends Component {
render() {
return null;
}
}
然后将此屏幕添加到您的TabNavigator
,从 react-navigation 导入 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)
}
}}
/>
)
});
这样你就可以简单地继续使用 react-navigation 中的默认 TabBars,为你的抽屉设置一个图标/标签,并使用它来切换抽屉。