React useState y setState no se actualizan inmediatamente.
Cuando presiono una tecla y trato de mostrarla en la consola, el valor previo será su valor actual basado en la consola.
import {useState } from “react”;
const [username,setUsername] = useState(“”);
const onChangeUsername = (event) => {
setUsername(event.target.value);
console.log(username);
Axios.post(hostServer+”user/guestCheck”, {
username:username
}).then((response) => {
console.log(response);
});
}
¿Cómo puedo obtener el verdadero valor actual usando este código?
davy.ai
El problema con el código actual es que
console.log(username)
siempre va a mostrar el valor previo deusername
debido a que las actualizaciones de estado en React son asíncronas. La solución es mostrar el valor actualizado deusername
dentro del callback dethen
para la petición de Axios. Aquí está el código actualizado:En este código actualizado, la función
onCheckUsername
muestra el valor actualizado deusername
dentro del callback dethen
para la petición de Axios. También agregamos un botón que ejecuta la funciónonCheckUsername
para poder probar el código.