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

136
Vistas
Reaccionar useEffect no se activa en la redirección

tengo una función llamada inicio de sesión que redirige al usuario a la página principal si todo estaba bien. Luego, en la página principal, quiero obtener información del usuario con useEffect usando el token que se almacenó cuando el usuario inició sesión, pero no pasa nada. Solo cuando actualizo la página obtengo los datos.

función de inicio de sesión

 export const login = ({ email, password, history }) => { return async (dispatch) => { try { const response = await fetch("http://localhost:5000/api/login", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ email, password, }), }); const data = await response.json(); if (data.status === 200) { localStorage.setItem("userToken", data.user); history.push("/"); } else { dispatch( setNotification({ variant: "error", message: data.message, }) ); } } catch (e) { console.log(e.message); } }; };

recuperar la función de usuario

 export const fetchUser = () => { return async (dispatch) => { try { const response = await fetch("http://localhost:5000/userInfo", { headers: { "x-access-token": localStorage.getItem("userToken"), }, }); const data = await response.json(); dispatch(setUser({ id: data.id, fullname: data.fullname, email: data.email })) } catch (error) {} }; };

useEffect en mi página principal

 useEffect(() => { dispatch(fetchUser()); }, []);

función de fondo

 module.exports.getCurrentUser = async (req, res) => { const token = req.headers["x-access-token"]; try { const verifyToken = jwt.verify(token, "123"); const user = await User.findOne({ email: verifyToken.email }); return res.json({ id: user._id, fullname: user.fullname, email: user.email }) } catch (error) {} };
about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

El segundo parámetro de useEffect le indica cuándo debe ejecutarse. Solo se ejecuta si uno de los valores de la matriz ha cambiado. Dado que pasa una matriz vacía, ninguno de los valores en ella ha cambiado.

Esto supone que su aplicación probablemente comience en '/', luego detecta que no hay ningún usuario, por lo que cambia a la pantalla de inicio de sesión. Cuando vuelve a la raíz, solo ejecuta useEffect si algo en la matriz ha cambiado desde el renderizado anterior.

Tal como está, isMounted no tiene mucho sentido. Esto podría ser simplemente:

 useEffect(() => { dispatch(fetchUser()); });
about 4 years ago · Santiago Gelvez Denunciar

0

Está llamando a setUser , pero ¿qué está llamando a su función de inicio de sesión?

about 4 years ago · Santiago Gelvez 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