Página de MyOrders: lista de órdenes
Clase 23 de 31 • Curso de React.js con Vite.js y TailwindCSS
Resumen
¿Cómo se pueden visualizar todas las órdenes creadas en una aplicación de Shoppy?
La gestión y visualización de órdenes en una plataforma de compras es esencial para los usuarios finales y los desarrolladores. En esta lección, veremos cómo crear una función en Shoppy para visualizar las órdenes de manera efectiva, permitiendo a los usuarios revisar fechas, cantidades y precios.
¿Cómo crear y estructurar el componente Order en el proyecto?
Primero, necesitamos definir el componente que representará cada orden. Este componente se alojará en una carpeta que nombraremos OrdersCard
y dentro de ella crearemos un archivo index.jsx
. La estructura de este componente incluirá:
- Visualización de la fecha de creación de la orden.
- Cantidad total de productos en la orden.
- Precio total de los productos.
- Un ícono que indique navegación, permitiendo ver los detalles de cada orden.
Implementación del componente
Aquí proponemos una estructura de código para visualizar una orden:
// index.jsx del componente OrderCard
function OrdersCard({ totalPrice, totalProducts, date }) {
return (
<div className="order-card border-black">
<span>{`Fecha: ${date}`}</span>
<span>{`Total de Productos: ${totalProducts}`}</span>
<span>{`Precio Total: ${totalPrice}`}</span>
</div>
);
}
export default OrdersCard;
¿Cómo integrar OrderCard en la página MyOrders?
Para mostrar todas las órdenes, utilizaremos el componente OrdersCard
en la página MyOrders
. La idea es que esta página tomará las órdenes desde un contexto global (en este caso, un contexto de carrito de compras) y las renderizará mediante un map
.
Código para renderizar órdenes
Incluimos el contexto del carrito de compras y usamos un .map
para mostrar cada orden:
// En la página MyOrders
import React, { useContext } from 'react';
import { ShoppingCartContext } from '../context/ShoppingCartContext';
import OrdersCard from '../components/OrderCard';
function MyOrders() {
const { orders } = useContext(ShoppingCartContext);
return (
<div>
{orders.map((order, index) => (
<OrdersCard
key={index}
totalPrice={order.totalPrice}
totalProducts={order.totalProducts}
date={order.date}
/>
))}
</div>
);
}
export default MyOrders;
¿Cómo manejar la navegación en MyOrders?
Una parte fundamental para mejorar la experiencia del usuario es permitir la navegación hacia los detalles de cada orden al hacer clic sobre ella. Esto se logra encapsulando OrdersCard
en un componente Link
de React Router.
Incorporación de navegación en las órdenes
import { Link } from 'react-router-dom';
// Dentro de la función de renderizado
<Link to={`/myorders/${order.id}`} key={index}>
<OrdersCard
totalPrice={order.totalPrice}
totalProducts={order.totalProducts}
date={order.date}
/>
</Link>
¿Cómo personalizar el estilo y corregir errores visuales?
A veces, el problema está en los detalles visuales. Asegúrate de que el contenedor tiene un width
adecuado para justificar los elementos correctamente y usar justify-center
para centrar el texto interiormente.
Para aquellos casos en los que hay que volver a una página anterior, utiliza un icono (como chevron-left
) adyacente al título de la página. Esto se puede realizar importando íconos de bibliotecas como Heroicons
.
Motivación y persistencia
Es emocionante mostrar cómo un proyecto web puede traer mejoras en la experiencia de usuario diaria. La persistencia de datos es el próximo paso, crucial para mantener estados incluso después de recargas de página. Esta persistencia se puede abordar en módulos posteriores.
Te animamos a seguir experimentando y aprendiendo sobre cómo hacer los sistemas más eficientes y usuarios más satisfechos. La programación de interfaces no solo es un reto, es una oportunidad para crear algo impactante. ¡Sigue adelante y nos vemos en la próxima clase!