En esta lección, aprenderemos cómo pasar parámetros entre diferentes pantallas en una aplicación de React Native utilizando React Navigation. Pasar parámetros es una funcionalidad esencial para crear aplicaciones dinámicas y personalizadas.
Conceptos Clave
- React Navigation: Biblioteca utilizada para manejar la navegación en aplicaciones de React Native.
- Parámetros de Ruta: Datos que se pasan de una pantalla a otra.
- Props de Navegación: Propiedades que React Navigation proporciona a los componentes para manejar la navegación y los parámetros.
Configuración Inicial
Antes de comenzar, asegúrate de tener React Navigation instalado y configurado en tu proyecto. Si no lo has hecho, sigue las instrucciones en la documentación oficial de React Navigation.
Pasando Parámetros
- Configuración del Navegador
Primero, configuraremos un navegador de pila (Stack Navigator) con dos pantallas: HomeScreen y DetailsScreen.
// App.js
import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import HomeScreen from './screens/HomeScreen';
import DetailsScreen from './screens/DetailsScreen';
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
- Enviando Parámetros
En la HomeScreen, utilizaremos la función navigation.navigate para enviar parámetros a la DetailsScreen.
// screens/HomeScreen.js
import React from 'react';
import { View, Text, Button } from 'react-native';
function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Home Screen</Text>
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details', {
itemId: 86,
otherParam: 'anything you want here',
})}
/>
</View>
);
}
export default HomeScreen;
- Recibiendo Parámetros
En la DetailsScreen, utilizaremos route.params para acceder a los parámetros enviados desde la HomeScreen.
// screens/DetailsScreen.js
import React from 'react';
import { View, Text, Button } from 'react-native';
function DetailsScreen({ route, navigation }) {
const { itemId, otherParam } = route.params;
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Details Screen</Text>
<Text>Item ID: {itemId}</Text>
<Text>Other Param: {otherParam}</Text>
<Button
title="Go to Details... again"
onPress={() => navigation.push('Details', {
itemId: Math.floor(Math.random() * 100),
})}
/>
<Button
title="Go back"
onPress={() => navigation.goBack()}
/>
<Button
title="Go back to first screen in stack"
onPress={() => navigation.popToTop()}
/>
</View>
);
}
export default DetailsScreen;Ejercicio Práctico
Ejercicio
- Crea una nueva pantalla llamada
ProfileScreen. - Desde
HomeScreen, navega aProfileScreenpasando un parámetrousername. - En
ProfileScreen, muestra elusernameen unText.
Solución
// App.js
import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import HomeScreen from './screens/HomeScreen';
import DetailsScreen from './screens/DetailsScreen';
import ProfileScreen from './screens/ProfileScreen';
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
<Stack.Screen name="Profile" component={ProfileScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;// screens/HomeScreen.js
import React from 'react';
import { View, Text, Button } from 'react-native';
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', {
username: 'JohnDoe',
})}
/>
</View>
);
}
export default HomeScreen;// screens/ProfileScreen.js
import React from 'react';
import { View, Text } from 'react-native';
function ProfileScreen({ route }) {
const { username } = route.params;
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Profile Screen</Text>
<Text>Username: {username}</Text>
</View>
);
}
export default ProfileScreen;Resumen
En esta lección, hemos aprendido cómo pasar parámetros entre pantallas utilizando React Navigation. Este conocimiento es fundamental para crear aplicaciones React Native dinámicas y personalizadas. Asegúrate de practicar estos conceptos creando tus propias pantallas y pasando diferentes tipos de parámetros.
En la próxima lección, exploraremos cómo obtener datos de la red utilizando la Fetch API. ¡Sigue adelante!
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
