Cómo agregar un Menú Hamburguesa a las pantallas del Tab Navigator en React Native
En este artículo, aprenderás cómo implementar un menú hamburguesa en las pantallas del Tab Navigator utilizando React Navigation. Nos basaremos en el componente HamburguerMenu
previamente creado, el cual se encuentra en src/presentation/components/shared
. También configuraremos cada pantalla (Tab1Screen
, Tab2Screen
y Tab3Screen
) para mostrar el menú hamburguesa.
Paso 1: Entendiendo el componente HamburguerMenu
El componente HamburguerMenu
utiliza useNavigation
y DrawerActions
de React Navigation para manejar la apertura y cierre del menú lateral (drawer). Este componente actualiza la configuración del encabezado (headerLeft
) para agregar un botón de menú.
import React, { useEffect } from 'react';
import { Pressable } from 'react-native';
import { Text } from 'react-native-paper';
import { DrawerActions, useNavigation } from '@react-navigation/native';
export const HamburguerMenu = () => {
const navigation = useNavigation();
useEffect(() => {
navigation.setOptions({
headerLeft: () => (
<Pressable onPress={() => navigation.dispatch(DrawerActions.toggleDrawer())}>
<Text>Menu</Text>
</Pressable>
),
});
});
return <></>;
};
¿Qué hace este código?
useNavigation
: Permite acceder al objeto de navegación de React Navigation.navigation.setOptions
: Configura las opciones del encabezado para incluir un botón personalizado (el menú hamburguesa).DrawerActions.toggleDrawer
: Alterna entre abrir y cerrar el drawer.
El botón del menú está representado por un simple componente de texto <Text>Menu</Text>
.
Paso 2: Configurando Tab1Screen
En la pantalla Tab1Screen
, solo necesitamos importar y usar el componente HamburguerMenu
dentro del componente principal.
import React from 'react';
import { View } from 'react-native';
import { Text } from 'react-native-paper';
import { HamburguerMenu } from '../../components/shared/HamburguerMenu';
export const Tab1Screen = () => {
return (
<View>
<HamburguerMenu />
<Text>Tab1Screen</Text>
</View>
);
};
Paso 3: Replicando la configuración en Tab2Screen
y Tab3Screen
Para las demás pantallas (Tab2Screen
y Tab3Screen
), el proceso es exactamente el mismo. Solo necesitas importar y agregar el componente HamburguerMenu
. Aquí tienes los códigos para ambas pantallas:
Tab2Screen
import React from 'react';
import { View } from 'react-native';
import { Text } from 'react-native-paper';
import { HamburguerMenu } from '../../components/shared/HamburguerMenu';
export const Tab2Screen = () => {
return (
<View>
<HamburguerMenu />
<Text>Tab2Screen</Text>
</View>
);
};
Tab3Screen
import React from 'react';
import { View } from 'react-native';
import { Text } from 'react-native-paper';
import { HamburguerMenu } from '../../components/shared/HamburguerMenu';
export const Tab3Screen = () => {
return (
<View>
<HamburguerMenu />
<Text>Tab3Screen</Text>
</View>
);
};
Paso 4: Verifica la navegación y el menú hamburguesa
Cuando ejecutes la aplicación y navegues a cualquiera de las pantallas (Tab1Screen
, Tab2Screen
, Tab3Screen
), deberías ver el botón de menú en la esquina izquierda del encabezado. Al presionarlo, se abrirá o cerrará el drawer.