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

100
Vistas
Agregar elemento a la matriz setState React

Tengo useState "setAnswers" (establecer) y "respuestas" (obtener) (las respuestas son una matriz con cadenas)
y haga clic en desencadenar:

 onClick = () => { setAnswers((prev) => [...prev, e]) setValue(questionKey, answers) console.log(watch(questionKey)) }

pero con cada clic solo obtuve el valor anterior

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

De hecho, su console.log se ejecuta antes de que el estado termine de calcularse, si coloca su console.log en otro lugar, normalmente, encontrará lo que desea.

Pruébalo y dime

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tu console.log(watch(questionKey)) todo el tiempo saldrá mal en onChange .

necesita usar un useEffect para iniciar sesión o hacer cualquier otra cosa con el estado como base.

 useEffect(() => { console.log(watch(questionKey) }, [questionKey]);

para obtener más información, puede leer aquí: https://dev.to/mpodlasin/react-useeffect-hook-explained-in-depth-on-a-simple-example-19ec

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que está un poco confundido: la función de watch de useForm se usa para

Observe las entradas especificadas y devuelva sus valores.

Entonces console.log(watch(questionKey)) no tiene sentido.

watch debe usarse de esta manera:

 React.useEffect(() => { const subscription = watch((value, { name, type }) => console.log(value, name, type)); return () => subscription.unsubscribe(); }, [watch]);

Utiliza un useEffect para suscribirse/cancelar la suscripción al reloj en algunos campos de formulario, y luego en el cuerpo del componente podría llamar:

 const watchSomething = watch(<something>);

y, cada vez que el campo llamado <something> cambie su valor, el watch ejecutará console.log(value, name, type) .

Si desea imprimir el último valor de una variable de estado, debe saber que setValue, setAnswer son funciones asíncronas y no se garantiza en absoluto que en la siguiente línea pueda registrar el último valor. Para solucionar tu problema tienes 2 opciones:

  1. use el watch correctamente;

  2. olvídate de watch y usa el clásico useEffect :

     onClick = () => { setAnswers((prev) => [...prev, e]) setValue(questionKey, answers) } useEffect(() => { console.log(questionKey); //<-- here you will print the very last value of questionKey }, [questionKey]);

Aquí una guía sobre cómo usar el watch .

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