En esta lección, aprenderemos a implementar un Navegador de Cajón (Drawer Navigator) en una aplicación de React Native utilizando la biblioteca react-navigation
. El Navegador de Cajón es una forma popular de navegación que permite a los usuarios acceder a diferentes secciones de la aplicación a través de un menú deslizable desde el borde de la pantalla.
Objetivos de Aprendizaje
- Comprender qué es un Navegador de Cajón y cuándo usarlo.
- Configurar un Navegador de Cajón en una aplicación de React Native.
- Personalizar el contenido y el estilo del cajón.
¿Qué es un Navegador de Cajón?
Un Navegador de Cajón es un componente de navegación que permite a los usuarios deslizar un menú desde el borde de la pantalla para acceder a diferentes secciones de la aplicación. Es especialmente útil en aplicaciones con múltiples secciones o categorías.
Configuración del Navegador de Cajón
Paso 1: Instalación de Dependencias
Primero, necesitamos instalar las dependencias necesarias para react-navigation
y el Navegador de Cajón.
npm install @react-navigation/native @react-navigation/drawer npm install react-native-gesture-handler react-native-reanimated
Paso 2: Configuración Básica
A continuación, configuramos el Navegador de Cajón en nuestra aplicación. Creamos un archivo App.js
con el siguiente contenido:
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createDrawerNavigator } from '@react-navigation/drawer'; import HomeScreen from './screens/HomeScreen'; import ProfileScreen from './screens/ProfileScreen'; const Drawer = createDrawerNavigator(); export default function App() { return ( <NavigationContainer> <Drawer.Navigator initialRouteName="Home"> <Drawer.Screen name="Home" component={HomeScreen} /> <Drawer.Screen name="Profile" component={ProfileScreen} /> </Drawer.Navigator> </NavigationContainer> ); }
Paso 3: Creación de Pantallas
Creamos dos pantallas simples, HomeScreen
y ProfileScreen
, en la carpeta screens
.
HomeScreen.js
import React from 'react'; import { View, Text, Button } from 'react-native'; export default function HomeScreen({ navigation }) { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Home Screen</Text> <Button title="Go to Profile" onPress={() => navigation.navigate('Profile')} /> </View> ); }
ProfileScreen.js
import React from 'react'; import { View, Text, Button } from 'react-native'; export default function ProfileScreen({ navigation }) { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Profile Screen</Text> <Button title="Go to Home" onPress={() => navigation.navigate('Home')} /> </View> ); }
Paso 4: Personalización del Cajón
Podemos personalizar el contenido y el estilo del cajón utilizando las opciones disponibles en Drawer.Navigator
.
Personalización del Contenido
Podemos agregar un contenido personalizado al cajón utilizando la propiedad drawerContent
.
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createDrawerNavigator, DrawerContentScrollView, DrawerItemList } from '@react-navigation/drawer'; import HomeScreen from './screens/HomeScreen'; import ProfileScreen from './screens/ProfileScreen'; const Drawer = createDrawerNavigator(); function CustomDrawerContent(props) { return ( <DrawerContentScrollView {...props}> <DrawerItemList {...props} /> {/* Aquí puedes agregar más elementos personalizados */} </DrawerContentScrollView> ); } export default function App() { return ( <NavigationContainer> <Drawer.Navigator drawerContent={props => <CustomDrawerContent {...props} />}> <Drawer.Screen name="Home" component={HomeScreen} /> <Drawer.Screen name="Profile" component={ProfileScreen} /> </Drawer.Navigator> </NavigationContainer> ); }
Personalización del Estilo
Podemos personalizar el estilo del cajón utilizando las propiedades drawerStyle
y drawerContentOptions
.
export default function App() { return ( <NavigationContainer> <Drawer.Navigator drawerStyle={{ backgroundColor: '#c6cbef', width: 240, }} drawerContentOptions={{ activeTintColor: '#e91e63', itemStyle: { marginVertical: 5 }, }} > <Drawer.Screen name="Home" component={HomeScreen} /> <Drawer.Screen name="Profile" component={ProfileScreen} /> </Drawer.Navigator> </NavigationContainer> ); }
Ejercicio Práctico
Ejercicio 1: Agregar una Nueva Pantalla
- Crea una nueva pantalla llamada
SettingsScreen
. - Agrega
SettingsScreen
al Navegador de Cajón. - Personaliza el cajón para que tenga un fondo de color diferente y un estilo de texto activo.
Solución
- Crear
SettingsScreen.js
:
import React from 'react'; import { View, Text } from 'react-native'; export default function SettingsScreen() { return ( <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <Text>Settings Screen</Text> </View> ); }
- Agregar
SettingsScreen
al Navegador de Cajón enApp.js
:
import SettingsScreen from './screens/SettingsScreen'; export default function App() { return ( <NavigationContainer> <Drawer.Navigator drawerStyle={{ backgroundColor: '#f0f0f0', width: 240, }} drawerContentOptions={{ activeTintColor: '#ff6347', itemStyle: { marginVertical: 5 }, }} > <Drawer.Screen name="Home" component={HomeScreen} /> <Drawer.Screen name="Profile" component={ProfileScreen} /> <Drawer.Screen name="Settings" component={SettingsScreen} /> </Drawer.Navigator> </NavigationContainer> ); }
Conclusión
En esta lección, hemos aprendido a configurar y personalizar un Navegador de Cajón en una aplicación de React Native. Ahora puedes implementar un menú deslizable en tus aplicaciones para mejorar la navegación y la experiencia del usuario. En la próxima lección, exploraremos cómo pasar parámetros a las rutas en React Navigation.
Curso de React Native
Módulo 1: Introducción a React Native
- ¿Qué es React Native?
- Configuración del Entorno de Desarrollo
- Aplicación Hola Mundo
- Entendiendo JSX
- Componentes y Props
Módulo 2: Componentes Básicos y Estilizado
- Visión General de Componentes Básicos
- Texto, Vista e Imagen
- Estilizado con Flexbox
- Manejo de Entrada del Usuario
- ScrollView y ListView
Módulo 3: Estado y Ciclo de Vida
- Métodos de Estado y Ciclo de Vida
- Manejo de Eventos
- Renderizado Condicional
- Listas y Claves
- Formularios y Componentes Controlados
Módulo 4: Navegación
- Introducción a React Navigation
- Navegador de Pila
- Navegador de Pestañas
- Navegador de Cajón
- Pasando Parámetros a Rutas
Módulo 5: Redes y Datos
- Obteniendo Datos con Fetch API
- Usando Axios para Solicitudes HTTP
- Manejo de Errores de Red
- AsyncStorage para Datos Locales
- Integración con APIs REST
Módulo 6: Conceptos Avanzados
Módulo 7: Despliegue y Publicación
- Construyendo para iOS
- Construyendo para Android
- Publicando en App Store
- Publicando en Google Play
- Integración y Entrega Continua