Tengo una lista de personas, cada una con una identificación. Tengo que agregar una etiqueta a una matriz recién creada para una persona con una determinada identificación. El objeto json 'estudiantes' ya existe y lo estoy actualizando usando su método useState setStudents pero parece estar devolviendo un objeto no identificado. Mi plan era el siguiente:
const updateStudent = (tag, id) => { setStudents((prevStudents) => { prevStudents.map((student) => { if (student.id !== id) return student; if (student.tags) { student["tags"].push(tag); } else { student["tags"] = [tag]; } return student; }); }); };Lo siento si mi explicación fue confusa, pero tldr: solo estoy tratando de agregar un elemento a una matriz de un objeto específico y parece que no funciona.
Un enfoque "más limpio" sería algo como esto:
const updateStudent = (tag, id) => { // form a new students object let newStudents = students.map(student => { if(student.id === id) { student.tags? student.tags.push(tag) : student.tags = [tag]; } return student; }); setStudents(newStudents); // set the newly formed object to state }Es mejor separar la lógica de actualización de la configuración del estado.