Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

81
Vistas
Cómo actualizar un solo objeto dentro de la matriz con useReduce en el cambio de estado

Tengo un componente de casilla de verificación y cuando se selecciona un valor para una casilla de verificación, quiero actualizar mi estado con valores verdaderos y falsos. En total tengo 5 estados diferentes. No puedo actualizar el único objeto de mi estado. ¿Alguien puede ayudar?

Con la implementación actual, quizState se vuelve indefinido después de establecer el valor

Mi reductor se ve así:

 quizState: [ {id:0, question_id: '', answer: [] }, {id:1, question_id: '', answer: [] }, {id:2, question_id: '', answer: [] }, {id:3, question_id: '', answer: [] }, {id:4, question_id: '', answer: [] }, ], export const appReducer = (state = appState, action) => { const { type, payload } = action; switch (type) { case SET_QUIZ_STATE: return state.quizState.map((quiz) => quiz.id === payload.id ? ({...quiz, payload}) : quiz) default: return state; }};

Y tengo un gancho:

 const setQuizState = useCallback( (quizState) => dispatch({ type: SET_QUIZ_STATE, payload: quizState }), [dispatch] );

En el componente, en el evento de cambio:

 setQuizState({ id: 0, question_id: question.question_id, answers: [true, false] });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Está devolviendo solo el subcampo quizState donde se necesita todo el state . Cambie su reductor como a continuación:

 export const appReducer = (state = appState, action) => { const { type, payload } = action; switch (type) { case SET_QUIZ_STATE: return { ...state, quizState: state.quizState.map(prevState => { if(prevState.id !== payload.id) return prevState; return { ...prevState, ...payload } }) }; default: return state; } };

Y esta respuesta asume que el objeto de payload es compatible para ser un elemento en la matriz quizState . Creo que tiene un error tipográfico en su evento onChange donde está poniendo answers , no answer para su carga útil.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda