este es mi código, todo está bien, pero si la declaración no funciona si borro la parte si del código, la solicitud funciona bien, pero cuando está dentro de si no funciona, mi objeto de errores está vacío
const handleSubmit=(e)=> { e.preventDefault(); setErrors(validate(values)) if (!errors) { console.log(errors); baseUrl.get("/sanctum/csrf-cookie").then((response) => { baseUrl .post("/api/v1/admin-login", values) .then((response) => { console.log(response); }) .catch((err) => {}); }); }
y el estado de los errores
const [errors, setErrors] = useState({});
eso es porque el valor de error no ha cambiado todavía.
puedes arreglarlo de esta manera
const [errors, setErrors] = useState({}) const handleSubmit=(e)=> { e.preventDefault(); const errors = validate(values) setErrors(errors) if (!errors) { console.log(errors); baseUrl.get("/sanctum/csrf-cookie").then((response) => { baseUrl .post("/api/v1/admin-login", values) .then((response) => { console.log(response); }) .catch((err) => {}); }); }
El valor aún no ha cambiado porque configuró errores para el estado de actualización en la función actual y la siguiente línea que desea usar. Puede usar la variable local en la función para verificar errores.
setState() no siempre actualiza inmediatamente el componente. Puede procesar por lotes o diferir la actualización hasta más tarde. Esto hace que leer esto. state justo después de llamar a setState() una trampa potencial. https://reactjs.org/docs/react-component.html#setstate
const handleSubmit=(e)=> { e.preventDefault(); const errors = validate(values) setErrors(errors) if (!errors) { console.log(errors); baseUrl.get("/sanctum/csrf-cookie").then((response) => { baseUrl .post("/api/v1/admin-login", values) .then((response) => { console.log(response); }) .catch((err) => {}); }); }