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

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

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 Report

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 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!