React & Redux explicado con Tacos
Published: 2023-03-15 19:30:31

---
title: React & Redux explicado con Tacos
published: true
description: Explicamos cómo usar Redux en React con una taquería para almacenar los pedidos de tacos. El estado se guarda en un store y se actualiza a través de acciones.
tags: 
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-03-15 19:13 +0000
---

![Tacos](https://static.vecteezy.com/system/resources/previews/015/025/578/original/taco-with-meat-and-vegetable-traditional-latin-american-mexican-fast-food-tacos-logo-icon-sticker-food-concept-vintage-retro-flat-cartoon-style-vector.jpg "Tacos")

Supongamos que tienes una taquería en la que los clientes pueden hacer pedidos de tacos personalizados. Cada vez que un cliente hace un pedido, necesitas mantener un registro de los ingredientes que se utilizaron para hacer los tacos. Aquí es donde Redux puede ser útil.

En términos simples, Redux es una herramienta de manejo de estado que se utiliza comúnmente en aplicaciones de React. En este caso, usaríamos Redux para almacenar el estado de los pedidos de tacos, que incluiría los ingredientes utilizados.

En Redux, el estado de la aplicación se almacena en un objeto llamado "store". El store es el único lugar donde se almacena el estado de la aplicación. Esto significa que si necesitamos actualizar el estado, debemos hacerlo a través de acciones que se envían al store.

En nuestro ejemplo de taquería, podríamos crear un store de Redux para almacenar los pedidos de tacos:

```javascript
import { createStore } from 'redux';

const initialState = {
  orders: []
};

function orderReducer(state = initialState, action) {
  switch (action.type) {
    case 'ADD_ORDER':
      return {
        ...state,
        orders: [...state.orders, action.payload]
      };
    default:
      return state;
  }
}

const store = createStore(orderReducer);
```

Aquí, creamos un store que tiene un estado inicial que incluye un array vacío de pedidos. También creamos un reductor orderReducer que manejará las acciones, incluyendo la acción de 'ADD_ORDER' que agrega un nuevo pedido al estado del store.

Luego, podemos usar React para crear una interfaz de usuario que permita a los clientes hacer pedidos de tacos. En nuestro componente de pedido, podemos usar Redux para agregar nuevos pedidos al store:

```javascript
import React, { useState } from 'react';
import { useDispatch } from 'react-redux';

function OrderForm() {
  const [ingredients, setIngredients] = useState([]);
  const dispatch = useDispatch();

  const handleSubmit = e => {
    e.preventDefault();
    dispatch({ type: 'ADD_ORDER', payload: ingredients });
    setIngredients([]);
  };

  const handleIngredientChange = e => {
    const { name, checked } = e.target;
    setIngredients(ingredients =>
      checked ? [...ingredients, name] : ingredients.filter(i => i !== name)
    );
  };

  return (
    <form onSubmit={handleSubmit}>
      <h2>Build your own taco</h2>
      <label>
        <input
          type="checkbox"
          name="beef"
          checked={ingredients.includes('beef')}
          onChange={handleIngredientChange}
        />
        Beef
      </label>
      <label>
        <input
          type="checkbox"
          name="cheese"
          checked={ingredients.includes('cheese')}
          onChange={handleIngredientChange}
        />
        Cheese
      </label>
      <button type="submit">Order</button>
    </form>
  );
}
```

Aquí, creamos un componente OrderForm que maneja el estado local de los ingredientes de los tacos con el hook useState. Cuando se envía el formulario, usamos el hook useDispatch para enviar una acción al store de Redux con los ingredientes seleccionados. Luego, limpiamos el estado local de ingredientes y renderizamos el formulario de nuevo.

En resumen, en este ejemplo de taquería, usamos Redux para almacenar el estado de los pedidos

![Redux & Tacos](https://i.ibb.co/JCLCkKk/DALL-E-2023-03-15-12-22-19-tacos-nuclear.png "Redux & Tacos")