Concepto clave
El diseño de una app de comercio electrónico y su navegación son como el plano de un centro comercial. Imagina que el diseño define la distribución de las tiendas, pasillos y áreas comunes, mientras que la navegación son las señales y mapas que guían a los clientes. En React Native con Expo, esto se traduce en crear una estructura visual atractiva y un flujo intuitivo entre pantallas.
Para apps de e-commerce, el diseño debe priorizar la experiencia del usuario: productos visibles, carrito accesible y checkout sencillo. La navegación, implementada con bibliotecas como React Navigation, conecta estas pantallas. Piensa en cómo Amazon o Mercado Libre organizan sus apps: pantalla de inicio, búsqueda, categorías, detalles del producto, carrito y perfil. Nuestro objetivo es replicar esa fluidez.
Cómo funciona en la práctica
Vamos a configurar la navegación para una app básica de e-commerce. Primero, instala React Navigation en tu proyecto Expo. Usa el comando: npx expo install react-native-screens react-native-safe-area-context y luego npm install @react-navigation/native @react-navigation/stack. Esto prepara el entorno para navegación tipo stack, ideal para transiciones entre pantallas.
Paso a paso: 1) Crea una carpeta screens con archivos como HomeScreen.js, ProductScreen.js, CartScreen.js. 2) En App.js, importa NavigationContainer y createStackNavigator. 3) Define las rutas, similar a cómo un mapa enlaza ubicaciones. Por ejemplo, HomeScreen lleva a ProductScreen, y este a CartScreen. 4) Añade botones o gestos para navegar, usando navigation.navigate('NombrePantalla'). Así, los usuarios pueden explorar productos y avanzar al checkout sin perderse.
Codigo en accion
Aquí tienes un ejemplo funcional de configuración básica en App.js. Antes de refactorizar, el código podría ser desorganizado; después, estará limpio y escalable.
Antes: Todo mezclado en un solo archivo, difícil de mantener.
// App.js desorganizado
import React from 'react';
import { View, Text } from 'react-native';
// Falta navegación y estructura clara
export default function App() {
return (
App de e-commerce
);
}Después: Configuración modular con navegación.
// App.js organizado
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import HomeScreen from './screens/HomeScreen';
import ProductScreen from './screens/ProductScreen';
import CartScreen from './screens/CartScreen';
const Stack = createStackNavigator();
export default function App() {
return (
);
}Errores comunes
- Olvidar envolver la app en NavigationContainer: Sin esto, la navegación no funciona. Siempre inclúyelo en el componente raíz.
- No manejar el estado del carrito entre pantallas: Usa Context API o estado global (como Redux) para compartir datos, no props en cadena.
- Diseño no responsivo: Asegúrate de usar Flexbox y dimensiones relativas para que se vea bien en iOS y Android.
- Navegación anidada mal configurada: Para tabs o drawers, planifica la jerarquía; evita stacks dentro de stacks sin necesidad.
- Ignorar el performance en listas de productos: Usa FlatList con
keyExtractoryinitialNumToRenderpara optimizar.
Checklist de dominio
- ¿Instalaste React Navigation y sus dependencias correctamente en Expo?
- ¿Creaste al menos tres pantallas (Home, Producto, Carrito) en la carpeta screens?
- ¿Configuraste un Stack Navigator con rutas definidas en App.js?
- ¿Implementaste navegación entre pantallas usando
navigation.navigate? - ¿Diseñaste una interfaz básica con componentes de React Native (View, Text, Image)?
- ¿Probaste la app en un emulador o dispositivo real para verificar la fluidez?
- ¿Documentaste la estructura de navegación para futuras expansiones?
Configura navegación y diseño inicial para una app de e-commerce
Sigue estos pasos para crear la base de tu app:
- Inicia un nuevo proyecto Expo con
npx create-expo-app ecommerce-appy navega a la carpeta. - Instala React Navigation y las dependencias necesarias usando los comandos de npm o yarn.
- Crea una carpeta
screensy dentro, tres archivos:HomeScreen.js,ProductScreen.js,CartScreen.js. En cada uno, exporta un componente básico que muestre un texto (ej., "Pantalla de Inicio"). - En
App.js, configura el NavigationContainer y un Stack Navigator que enlace las tres pantallas. DefineHomecomo ruta inicial. - Añade un botón en HomeScreen que navegue a ProductScreen usando
navigation.navigate('Product'). Asegúrate de recibir la propnavigation. - Ejecuta la app con
npx expo starty prueba la navegación en un emulador o dispositivo. - Mejora el diseño: en HomeScreen, añade un header con un título y una lista simulada de productos usando FlatList.
- Usa
import { useNavigation } from '@react-navigation/native'si no tienes la prop navigation directamente. - Para FlatList, define un array de datos dummy (ej., [{id: 1, name: 'Producto 1'}]) y renderiza cada item.
- Verifica que todas las pantallas estén correctamente importadas en App.js con rutas relativas.
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.