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

390
Visualizações
Cómo corregir el error Error no detectado: demasiados renderizados. React limita la cantidad de renderizados para evitar un bucle infinito usando react?

estoy recibiendo un error no detectado. demasiadas re-renderizaciones.

¿Qué estoy tratando de hacer?

cuando se hace clic en un botón, se llama a la función de inicio y se abre una ventana emergente modal. una vez que finaliza la función de inicio, tengo que cerrar la ventana emergente modal.

a continuación se muestra el código,

 enum CheckStatus { INITIAL, STARTING, STARTED, FINISHED, FAILED, } const useSomeHook = (id) => { const [status, setStatus] = React.useState(CheckStatus.INITIAL); const start = React.useCallback(async () => { setStatus(CheckStatus.STARTING); let data= undefined; try { const { data: checkData } = await startCheck({ variables: { id }, }); data = checkData; } //some logic React.useEffect(() => { if (status === CheckStatus.STARTED ) { stopPolling && stopPolling(); setStatus(Check Status.FINISHED); //once status is finished then i have to close modal popup } } return { start, status, }; }; const Main = () => { const [openModal,setOpenModal] = React.useState(false); const {start,status} = useSomeHook(id); return ( {openModal && (<Modal />)} ); }

Ahora quiero establecer el estado openModal en falso cuando finalice el estado. así que me gusta a continuación,

 const Main = () => { const [openModal,setOpenModal] = React.useState(false); const {start,status} = useSomeHook(id); if (status === CheckStatus.FINISHED) { setOpenModal(false); } //this gives error return ( {openModal && (<Modal />)} ); }

pero da este error

 Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infinite loop

¿Cómo puedo arreglar esto? ¿Es esta la solución correcta?

¿También hay alguna manera de configurar setOpenModal dentro de useSomeHook tan pronto como el estado se establezca en FINALIZADO?

alguien podría ayudarme a arreglar esto. Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No estoy 100% seguro, pero creo que su problema es que está configurando un estado en cada renderizado, que a su vez siempre se volverá a renderizar y restablecerá el estado. El bucle infinito. Para evitar esto, probablemente debería usar useEffect

 const Main = () => { const [openModal,setOpenModal] = React.useState(false); const {start,status} = useSomeHook(id); React.useEffect(() => { if (status === CheckStatus.FINISHED) { setOpenModal(false); } }, [status]); return ( {openModal && (<Modal />)} ); }

lo que solo realizaría la verificación si cada vez que se cambia el status , en lugar de en cada renderizado.

about 4 years ago · Juan Pablo Isaza 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