SideMenu del carrito de compras

Clase 16 de 31Curso de React.js con Vite.js y TailwindCSS

Resumen

¿Cómo crear un menú lateral de checkout?

El desarrollo de un e-commerce demanda detalles específicos como la visualización de un carrito de compras. En este tutorial, aprenderemos a estructurar e implementar un Checkout Side Menu que nos permita visualizar las compras en curso en nuestro proyecto.

¿Cómo iniciar con el Checkout Side Menu?

Comenzamos creando una nueva carpeta en la sección de Componentes de nuestro código:

mkdir CheckoutSideMenu

Aquí, añadiremos dos archivos base: index.jsx para el código principal y styles.css para los estilos. La idea es aprovechar el código ya existente del componente Product Detail para agilizar el proceso. Por tanto, copiaremos el código de Product Detail y lo adaptaremos para el Checkout Side Menu.

// En index.jsx
import React, { useContext } from 'react';
import './styles.css';

const CheckoutSideMenu = () => {
  // Aquí va la lógica y el return adaptado
};

export default CheckoutSideMenu;

¿Cómo adaptar el estado y contexto?

Para manejar la apertura y cierre del menú, usaremos un nuevo estado en nuestro contexto:

  1. Copiaremos la estructura de ProductDetailOpenClose.
  2. Renombraremos las variables y funciones a algo más representativo como CheckoutSideMenuOpen.
// En context/index.jcx
const [isCheckoutSideMenuOpen, setIsCheckoutSideMenuOpen] = useState(false);

const openCheckoutSideMenu = () => setIsCheckoutSideMenuOpen(true);
const closeCheckoutSideMenu = () => setIsCheckoutSideMenuOpen(false);

providerValues.isCheckoutSideMenuOpen = isCheckoutSideMenuOpen;
providerValues.openCheckoutSideMenu = openCheckoutSideMenu;
providerValues.closeCheckoutSideMenu = closeCheckoutSideMenu;

Esto implica también ajustar el componente para que escuche y manipule correctamente estos nuevos estados al abrir y cerrar el Checkout Side Menu.

¿Cómo integrar el menú en la aplicación?

El componente Checkout Side Menu deberá ser importado en nuestra aplicación principal. Se inserta en un nivel superior como en App.js para que esté accesible desde diferentes secciones del sitio.

// En App.js
import CheckoutSideMenu from './components/CheckoutSideMenu';

function App() {
  return (
    <>
      {/* Otros componentes */}
      <CheckoutSideMenu />
    </>
  );
}

¿Cómo manejar eventos de forma exclusiva?

Para evitar conflictos al hacer clic en los elementos interactivos de la interfaz, como el ícono del carrito:

  1. Implementamos stopPropagation para evitar que las acciones sobre el ícono afecten a otros elementos adyacentes.
  2. Pasamos el evento al manejador para controlar el flujo.
// Dentro de AddProductsToCart
const handleCartClick = (event) => {
  event.stopPropagation(); // Evita que el evento se propague
  context.openCheckoutSideMenu();
};

¿Cómo validar el funcionamiento en el navegador?

Una vez realizados los cambios, es vital revisar el funcionamiento:

  1. Verificar que al presionar el botón de más, se muestre el My Order.
  2. Asegurar que al cerrar el menú, el estado se actualice apropiadamente.
  3. Comprobar que las acciones en Cart y Detail no interfieran entre sí.

Con los cambios listos, ejecuta la aplicación y observa cómo funciona en el navegador asegurándote de que los eventos estén bien gestionados.

Con estos pasos, estaremos cada vez más cerca de tener un e-commerce funcional con un carrito de compras interactivo. A medida que continúas, recuerda: cada componente debe gestionarse de forma efectiva para asegurar una experiencia de usuario impecable. Sigue adelante y aprende a crear las pequeñas Cards para los elementos de tu carrito en clases futuras. ¡Mucho ánimo!