Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

139
Views
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 answers
Answer question

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 Report

0

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

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!