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

220
Vistas
Configuración de React state Asynchronous - React useState hook

Estoy tratando de actualizar 1 cita dentro de una matriz de "comillas"

 const [quotes, setQuotes] = useState([]); const [quoteToUpdate, setQuoteToUpdate] = useState(initialValues);

Cuando hago clic en un interruptor (casilla de verificación), configuro quoteToUpdate con quoteToUpdate con los datos de cotización seleccionados y actualizo el cambio de verdadero a falso o viceversa.

ingrese la descripción de la imagen aquí

 const onCheckboxChange = async (e, selectedQuote) => { setQuoteToUpdate({...selectedQuote, [e.target.name]: e.target.checked}); };

El problema que tengo es que, justo después de actualizar quoteUpdate , necesito enviar el objeto actualizado al backend para actualizarlo. Pero dado que el estado de React es sync , el quoteToUpdate no se actualiza instantáneamente, sino que se pone en cola.

Lo que he intentado: he intentado poner la función onSubmit() dentro de un useEffect pero claramente no funciona.

 useEffect(() => { onSubmit(quoteToUpdate); }, [quoteToUpdate])

onSubmit se ve así:

 const onSubmit = (quoteToUpdate) => { axiosWithAuth().put('/quotes/' + quoteToUpdate.id, quoteToUpdate) .then((res) => { const updatedQuote = res.data; setQuotes(quotes.map(quote => ( quote.id === updatedQuote.id ? {...quote, 'is_complete': updatedQuote.is_complete} : quote )) ); const alertContent = `quote updated successfully.`; halfmoon.stickyAlerts = document.getElementsByClassName("sticky-alerts")[0] halfmoon.initStickyAlert({ content: alertContent, alertType: "alert-success", title: "Successfully updated" }) }).catch(error => { console.log(error.message); }); }

Actualizar:

Parece que al hacer clic en el interruptor envía el valor anterior. ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
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