Saltar al contenido

Lección 16 de 20 · Lectura y práctica

Diseño de la app y configuración de navegación

Concepto claveEl 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.

Del concepto a la práctica

Taller de esta lección

Antes de programar una tienda, define el recorrido mínimo y los datos que cruzan cada transición. Una ruta de detalle necesita un identificador; el carrito necesita acceso compartido; checkout necesita una instantánea de líneas y total calculado. Dibujar estas relaciones evita que cada pantalla invente su propia versión del producto.

Ejemplo resuelto

Flujo: Inicio -> Detalle(productId) -> Carrito -> Checkout. Desde Detalle se envía p1; Carrito lee el estado global; Checkout recibe las líneas actuales, pero recalcula el total para no confiar en un texto visual.

Pruébalo

  1. Lista pantallas y propósito.

  2. Anota parámetros de cada ruta.

  3. Marca qué datos son globales.

  4. Prueba volver atrás sin duplicar acciones.

Error frecuente: pasar el carrito completo como parámetro de navegación y crear copias divergentes. Corrige usando una fuente compartida y parámetros mínimos.

Ejercicio: navega con p1 y vuelve dos veces.

Comprueba tu resultado

una sola entrada en el carrito, detalle identifica p1 y la ruta no depende de una copia obsoleta.

Navegación sin efectos de negocio

Define p1=Cuaderno,p2=Lápiz,p3=Goma en catálogo único; precios/stock se concretan en17. Registra Inicio,Detalle,Carrito,Checkout. Detail recibe productId y consulta datos por ID; productId=p9 produce Producto no encontrado. El provider del carrito está por encima del stack manual, o por encima del Stack de Router en _layout. No dupliques NavigationContainer en Router.

La prueba comienza con carrito vacío. Abre p1 y pulsa Añadir exactamente una vez. Navega atrás, vuelve a p1 y regresa al carrito sin volver a añadir: sigue una línea con qty1. Abrir una pantalla por sí solo no crea líneas, envía pedidos ni modifica cantidades. Si el efecto de montaje añade productos, quítalo; la acción de negocio pertenece al botón. Declara qué retorno usa goBack/popTo y qué apertura usa navigate/push en React Navigation7, sin trasladar automáticamente las reglas de6. Un parámetro con todo el carrito se vuelve una copia obsoleta; usa estado compartido y parámetros serializables.

Las pestañas Catálogo y Cuenta contienen navegación de lista a detalle y retorno dentro de su stack.
CursaloMapa de práctica
Pantallas y navegación en stack

Las pestañas organizan secciones y cada stack conserva su historial de pantallas. Pasar un identificador de producto permite abrir el detalle sin duplicar el objeto completo; comprueba el regreso y los parámetros.

Ver la infografía en tamaño completo ↗

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 keyExtractor y initialNumToRender para optimizar.

Checklist de dominio

  1. ¿Instalaste React Navigation y sus dependencias correctamente en Expo?
  2. ¿Creaste al menos tres pantallas (Home, Producto, Carrito) en la carpeta screens?
  3. ¿Configuraste un Stack Navigator con rutas definidas en App.js?
  4. ¿Implementaste navegación entre pantallas usando navigation.navigate?
  5. ¿Diseñaste una interfaz básica con componentes de React Native (View, Text, Image)?
  6. ¿Probaste la app en un emulador o dispositivo real para verificar la fluidez?
  7. ¿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:

  1. Inicia un nuevo proyecto Expo con npx create-expo-app ecommerce-app y navega a la carpeta.
  2. Instala React Navigation y las dependencias necesarias usando los comandos de npm o yarn.
  3. Crea una carpeta screens y 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").
  4. En App.js, configura el NavigationContainer y un Stack Navigator que enlace las tres pantallas. Define Home como ruta inicial.
  5. Añade un botón en HomeScreen que navegue a ProductScreen usando navigation.navigate('Product'). Asegúrate de recibir la prop navigation.
  6. Ejecuta la app con npx expo start y prueba la navegación en un emulador o dispositivo.
  7. Mejora el diseño: en HomeScreen, añade un header con un título y una lista simulada de productos usando FlatList.
Pistas
  • 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.

Sigue con React Native y Expo: Interfaces, Estado y APIs de Dispositivo

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.