Hola Desarrolladores como estan?
Estoy tratando de actualizar los valores anidados, pero todos fallan.
const [ControlGaps, setControlGaps] = useState([ { id: 1, name: "Pizza 1", status: 1, applicable: true, questions: [ { id: 1, question: "how are you?", answer: null, evidence: null, treatment: null, type: "Implemented", { id: 2, evidence: null, treatment: null, type: "Implemented", question: "how old are you?", answer: null, } ], }, { id: 2, name: "Pizza 2", status: 1, applicable: true, questions: [ { id: 1, type: "Implemented", question: "How are you 2?", answer: null, evidence: null, treatment: null, { id: 2, answer: null, evidence: null, treatment: null, type: "Implemented", question: "How old are you?", }, ], }])Intenté usar onChange this
setControlGaps([...ControlGaps, [ControlGaps[index]].applicable]:checked]);o
setControlGaps({ ...ControlGaps, [ControlGaps[index].applicable]: checked, });Pero todo está mal.
La pregunta es cómo actualizar los valores en el campo anidado, como actualizar los campos en el objeto dentro de la matriz de objetos, por ejemplo.
Se puede hacer usando algunos slice() y spread . Pero deberías mirar a los ayudantes de inmutabilidad para tales cosas anidadas.
setControlGaps([setControlGaps.slice(0,index), { ...ControlGaps[index], applicable : checked } ,setControlGaps.slice(index+1)]);Prueba esto
setControlGaps(prevState => { const newState = prevState.map((item, itemIndex) => { if (itemIndex === index) { item.applicable = false; return item; } return item; }); return newState; });