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);});