En esta lección, aprenderemos a implementar la navegación por pestañas en una aplicación de React Native utilizando la biblioteca React Navigation
. La navegación por pestañas es una forma común de organizar la navegación en aplicaciones móviles, permitiendo a los usuarios cambiar entre diferentes vistas o secciones de la aplicación mediante pestañas en la parte inferior o superior de la pantalla.
Objetivos de Aprendizaje
- Comprender qué es un navegador de pestañas y cuándo usarlo.
- Configurar un navegador de pestañas en una aplicación de React Native.
- Personalizar las pestañas con iconos y etiquetas.
- Manejar la navegación entre diferentes pantallas usando pestañas.
Requisitos Previos
- Conocimiento básico de React Native.
- Familiaridad con la configuración de
React Navigation
(ver lección 04-01).
Instalación de Dependencias
Antes de comenzar, asegúrate de tener instaladas las siguientes dependencias:
npm install @react-navigation/native @react-navigation/bottom-tabs npm install react-native-screens react-native-safe-area-context
Configuración Básica
Primero, configura el contenedor de navegación en tu archivo principal (por ejemplo, App.js
):
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import HomeScreen from './screens/HomeScreen'; import SettingsScreen from './screens/SettingsScreen'; const Tab = createBottomTabNavigator(); export default function App() { return ( <NavigationContainer> <Tab.Navigator> <Tab.Screen name="Home" component={HomeScreen} /> <Tab.Screen name="Settings" component={SettingsScreen} /> </Tab.Navigator> </NavigationContainer> ); }
En este ejemplo, hemos creado un navegador de pestañas con dos pantallas: HomeScreen
y SettingsScreen
.
Creación de Pantallas
Crea las pantallas HomeScreen
y SettingsScreen
en la carpeta screens
:
HomeScreen.js
import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; export default function HomeScreen() { return ( <View style={styles.container}> <Text>Home Screen</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, });
SettingsScreen.js
import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; export default function SettingsScreen() { return ( <View style={styles.container}> <Text>Settings Screen</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, });
Personalización de Pestañas
Puedes personalizar las pestañas añadiendo iconos y etiquetas. Para esto, puedes usar la biblioteca react-native-vector-icons
:
Luego, modifica el archivo App.js
para incluir iconos en las pestañas:
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import HomeScreen from './screens/HomeScreen'; import SettingsScreen from './screens/SettingsScreen'; import Icon from 'react-native-vector-icons/Ionicons'; const Tab = createBottomTabNavigator(); export default function App() { return ( <NavigationContainer> <Tab.Navigator screenOptions={({ route }) => ({ tabBarIcon: ({ focused, color, size }) => { let iconName; if (route.name === 'Home') { iconName = focused ? 'home' : 'home-outline'; } else if (route.name === 'Settings') { iconName = focused ? 'settings' : 'settings-outline'; } return <Icon name={iconName} size={size} color={color} />; }, })} tabBarOptions={{ activeTintColor: 'tomato', inactiveTintColor: 'gray', }} > <Tab.Screen name="Home" component={HomeScreen} /> <Tab.Screen name="Settings" component={SettingsScreen} /> </Tab.Navigator> </NavigationContainer> ); }
En este ejemplo, hemos añadido iconos a las pestañas utilizando react-native-vector-icons/Ionicons
. Los iconos cambian según si la pestaña está activa o inactiva.
Ejercicio Práctico
Ejercicio 1: Añadir una Nueva Pestaña
- Crea una nueva pantalla llamada
ProfileScreen.js
en la carpetascreens
. - Añade la nueva pantalla al navegador de pestañas en
App.js
. - Personaliza la pestaña con un icono adecuado.
Solución
ProfileScreen.js
import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; export default function ProfileScreen() { return ( <View style={styles.container}> <Text>Profile Screen</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, });
App.js
import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import HomeScreen from './screens/HomeScreen'; import SettingsScreen from './screens/SettingsScreen'; import ProfileScreen from './screens/ProfileScreen'; import Icon from 'react-native-vector-icons/Ionicons'; const Tab = createBottomTabNavigator(); export default function App() { return ( <NavigationContainer> <Tab.Navigator screenOptions={({ route }) => ({ tabBarIcon: ({ focused, color, size }) => { let iconName; if (route.name === 'Home') { iconName = focused ? 'home' : 'home-outline'; } else if (route.name === 'Settings') { iconName = focused ? 'settings' : 'settings-outline'; } else if (route.name === 'Profile') { iconName = focused ? 'person' : 'person-outline'; } return <Icon name={iconName} size={size} color={color} />; }, })} tabBarOptions={{ activeTintColor: 'tomato', inactiveTintColor: 'gray', }} > <Tab.Screen name="Home" component={HomeScreen} /> <Tab.Screen name="Settings" component={SettingsScreen} /> <Tab.Screen name="Profile" component={ProfileScreen} /> </Tab.Navigator> </NavigationContainer> ); }
Conclusión
En esta lección, hemos aprendido a configurar y personalizar un navegador de pestañas en una aplicación de React Native. Ahora deberías ser capaz de:
- Configurar un navegador de pestañas básico.
- Añadir y personalizar iconos y etiquetas en las pestañas.
- Navegar entre diferentes pantallas usando pestañas.
En la próxima lección, exploraremos el Navegador de Cajón, otra forma popular de navegación en aplicaciones móviles.
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