Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

119
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda