Construye una lista de emojis robusta con Redux Toolkit y TypeScript: define tipos claros, usa createReducer y aplica acciones precisas para agregar y eliminar elementos. Aquí verás el flujo completo con payload, state y addCase, tal como se implementa en un proyecto real.
¿Qué construimos en el reducer para la lista de emojis?
Creamos un reducer que parte de un estado inicial vacío y define cómo se modifica al recibir acciones para agregar y eliminar. Se apoya en createReducer de Redux Toolkit y en tipos de TypeScript para mantener el código claro y seguro.
¿Cómo definimos los tipos Todo y el estado global?
Tipo Todo con id numérico y texto de la tarea.
Estado global como lista de Todos.
Estado inicial como array vacío.
// TipostypeTodo={ id:number; text:string;};// Estado globaltypeTodosState=Todo[];// Estado inicialconst initialState:TodosState=[];
¿Cómo se crea el reducer con createReducer?
Se importa createReducer desde Redux Toolkit.
Se construye con un builder para encadenar addCase.
Se importan las acciones addTodo y removeTodo desde TodoActions.
import{ createReducer }from'@reduxjs/toolkit';import{ addTodo, removeTodo }from'./TodoActions';constTodoReducer=createReducer(initialState, builder =>{// Casos se agregan con builder.addCase});exportdefaultTodoReducer;
¿Cómo se agregan y eliminan Todos con acciones?
Se definen dos casos con addCase: uno para agregar con addTodo y otro para eliminar con removeTodo. Se accede a state y a action para leer el payload y actualizar el estado.
¿Qué hace addTodo al modificar el estado?
Toma el estado actual para conocer la longitud del array.
Crea un objeto con id incremental: length + 1 empieza en 1.
Usa el payload como texto del nuevo Todo.
Inserta el elemento con push.
builder.addCase(addTodo,(state, action)=>{const newTodo:Todo={ id: state.length+1,// el primer id será 1 text: action.payload,// texto capturado del input}; state.push(newTodo);});
createReducer es una función de la biblioteca Redux Toolkit que simplifica la creación de reducers. Su principal ventaja es que permite escribir reducers de manera más concisa y legible.
Parámetros
Estado inicial: Es el estado que tendrá el reducer al iniciar.
Un objeto de "builder": En este objeto se definen las acciones y sus correspondientes funciones de manejo. Utiliza métodos como addCase para agregar casos que manejan acciones específicas.
Funcionalidad
createReducer permite establecer cómo el estado cambia en respuesta a acciones, manejando las mutaciones de forma inmutable bajo el capó, lo que significa que no se modifica el estado directamente, sino que se crea uno nuevo.
Esto te ayuda a mantener una estructura de código más limpia y fácil de entender en tus aplicaciones de React.
Muy buena explicación de createReducer, clara y al punto.
📝 Resumen: Gestión de Tareas con Redux Toolkit
Dominar el estado en aplicaciones con flujo constante de datos es clave. Usar Redux Toolkit es la forma más eficiente de lograrlo. 🚀
🏗️ 1. Definir la Estructura (Tipado)
Antes de programar, necesitamos saber qué datos manejamos:
ID: 🔢 Un número único para identificar la tarea.
Texto: ✍️ La descripción de la tarea.
Estado Inicial: 📭 Un array vacío al empezar ([]).
🛠️ 2. El Reducer con createReducer
Redux Toolkit usa el builder pattern, lo que hace que el código sea más limpio y fácil de seguir.
addTodo ➕: Genera un nuevo objeto y lo "empuja" al estado. El ID se crea automáticamente según el tamaño de la lista.
removeTodo ❌: Filtra la lista y elimina la tarea que coincida con el ID seleccionado.