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

109
Vistas
useEffect no se activa correctamente cuando se usa con dispatch

¿Hay alguna solución mejor para esto? Cuando se activa el primer useEffect, solo getAccountDetailsData() tendrá éxito, getErrorLogInfo() fallará porque store.AccountDetails.ID es nulo en esa etapa. getAccountDetailsData() obtendrá ese valor.

Ahora el efecto de uso no se dispara de nuevo, sino que espera 60 segundos para disparar el segundo que se dispara cada minuto. y entonces todo funciona bien.

El problema es que tengo que esperar 1 minuto antes de que getErrorLogInfo() funcione. si pongo una lista de dependencias [] en el primer useEffect(), se activará en bucles. No tendré que esperar 1 minuto, pero generará un error 429

 useEffect(() => { dispatch(getAccountDetailsData(user.EmailAddress)); // we call this to get AccountDetails.ID dispatch(getErrorLogInfo(store.AccountDetails.ID)); // will not work missing AccountDetails.ID }, []); // I can put dependency list [] but will be endless loop //now I have to wait 60 seconds to try again useEffect(() => { dispatch(getAccountDetailsData(user.EmailAddress)); works dispatch(getErrorLogInfo(store.AccountDetails.ID)); works }, 60000);// refresh data after every 60 seconds return () => clearInterval(interval); }, [store]);
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Deberá colocar una declaración de protección en su devolución de llamada useEffect para evitar que intente getErrorLogInfo antes de que se configure store.AccountDetails.ID .

También se divide para usar dos declaraciones useEffect ya que tendrán diferentes dependencias:

 useEffect(() => { if (user?.EmailAddress) // checks if it exists before running the dispatch dispatch(getAccountDetailsData(user.EmailAddress)); }, [user?.EmailAddress]) // gets called once upon mount and if `user.EmailAddress` changes useEffect(() => { if (store?.AccountDetails?.ID) // checks if it exists before running the dispatch dispatch(getErrorLogInfo(store.AccountDetails.ID)) }, [store?.AccountDetails?.ID]) // gets called once upon mount and if `user.EmailAddress` changes
about 4 years ago · Santiago Trujillo Denunciar

0

si desea obtener datos según los datos de la tienda, puede hacerlo con 2 useEffect como este:

 useEffect(() => { dispatch(getAccountDetailsData(user.EmailAddress)); }, []) useEffect(()=>{ if(store.AccountDetails){ dispatch(getErrorLogInfo(store.AccountDetails.ID)); } },[store.AccountDetails])
about 4 years ago · Santiago Trujillo 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