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

208
Vistas
Incapaz de resolver, los ganchos solo se pueden llamar dentro del cuerpo de un componente de función

Estoy tratando de enviar una función de inicio de sesión desde un componente. Pero este error al enviar

Advertencia: se detectó un error no controlado de submitForm () Error: llamada de gancho no válida. Los ganchos solo se pueden llamar dentro del cuerpo de un componente de función. Esto podría suceder por una de las siguientes razones:

  1. Es posible que tenga versiones que no coincidan de React y el renderizador (como React DOM)

Aquí están las versiones

 "react-dom": "^17.0.2", "react": "^17.0.2",
  1. Podrías estar rompiendo las Reglas de los Hooks
  2. Es posible que tenga más de una copia de React en la misma aplicación

Estoy usando una sola aplicación.

He estado usando este enfoque en otros proyectos de manera similar, pero esta vez no funciona. Por favor, ayúdenme a eliminar este problema. Ese es el código relacionado.

 export default function LoginForm() { const dispatch = useDispatch; const navigate = useNavigate(); const userLogin = useSelector((state) => state.userLogin); const { error: loginError, loading: loginLoading, userInfo } = userLogin; const [showPassword, setShowPassword] = useState(false); const LoginSchema = Yup.object().shape({ email: Yup.string().email('Email must be a valid email address').required('Email is required'), password: Yup.string().required('Password is required'), }); const formik = useFormik({ initialValues: { email: '', password: '', }, validationSchema: LoginSchema, onSubmit: () => { dispatch(login(values.email, values.password)); }, }); const { errors, touched, values, isSubmitting, handleSubmit, getFieldProps } = formik; const handleShowPassword = () => { setShowPassword((show) => !show); }; useEffect(() => { if (userInfo) { navigate('/dashboard', { replace: true }); } }, [navigate, userInfo]);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Está asignando la función useDispatch para dispatch const

 const dispatch = useDispatch;

en lugar de llamar al gancho para obtener la función de envío real

 const dispatch = useDispatch();

Es por eso que recibe el error más tarde al llamar al despacho.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Podrías probar useRef

 const navigate = useRef(useNavigate()); ...... useEffect(() => { if (userInfo) { navigate('/dashboard', { replace: true }); } }, [navigate, userInfo]);
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