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

354
Visualizações
Error no detectado: la profundidad máxima de actualización excedió el error con useState ()

¿Por qué recibo este error?

 Uncaught Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.**

Este es mi código:

 const [roles, setRoles] = useState([]); useLayoutEffect(() => { setRoles(["5nxg5wvb"]); });

Tenga en cuenta que aparece el mismo error cuando uso useEffect, y ese error solo desaparece cuando cambio el código a esto:

 useLayoutEffect(() => { setRoles("5nxg5wvb"); });

Cualquier ayuda sería apreciada...

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

0

Debe proporcionar una matriz de dependencia en setEffect o se ejecutará encada cambio de estado . Dado que está cambiando de estado, eso significa que se ejecutará, lo que hace que se ejecute de nuevo, lo que hace que se ejecute de nuevo, etc.

La matriz de dependencia le dice cuándo ejecutar. Una matriz vacía significa "ejecutar este efecto en el montaje", por lo que solo se ejecutará una vez. Una matriz con nombres de variables significa "ejecutar cuando cambie cualquiera de estas variables".

 useLayoutEffect(() => { setRoles("5nxg5wvb"); }, []);
about 4 years ago · Juan Pablo Isaza Relatório

0

¿Por qué ocurrió este error?

Debido a que está utilizando useEffect o useLayoutEffect mientras no especifica los segundos parámetros de los ganchos, solo coloca el primer parámetro, que es la función de devolución de llamada, y el valor del estado siempre es diferente.

¿Por qué poner esto ["5nxg5wvb"] no funciona mientras que poner "5nxg5wvb" funciona?

  1. Porque si usa [] (una matriz), crea un nuevo objeto y lo compara con el objeto anterior cada vez que se vuelve a renderizar (porque no especifica los segundos parámetros de los ganchos, pero sabe que [] === [] dará como resultado un valor false )
  2. Mientras que si usa "" (una cadena), React comparará directamente el valor en su lugar, y si es el mismo, el estado no se actualizará y no habrá una nueva representación.

¿Cómo arreglar esto?

  1. Puede poner el segundo parámetro de los ganchos de esta manera, el siguiente código hará que los ganchos se ejecuten solo una vez:
 useLayoutEffect(() => { setRoles(["5nxg5wvb"]); }, []);
  1. Simplemente coloque el nuevo valor directamente en useState de esta manera, no es necesario colocar useEffect con datos estáticos:
 const [roles, setRoles] = useState(["5nxg5wvb"]);

Si ambas sugerencias no funcionan para su caso de uso, ingrese más información sobre su caso de uso.

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