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

328
Visualizações
¿Por qué setState causa demasiados errores de renderización aunque el estado no haya cambiado?

Hola, estoy aprendiendo React ahora y tengo problemas con el estado.

Sé cuándo cambia el estado, el componente se vuelve a renderizar y el código en UseEffect sin profundidad solo se ejecuta una vez. Pero no puedo explicar exactamente por qué se produce una representación infinita cuando escribo setState en JSX o en la sintaxis de representación.

el siguiente código provoca una repetición infinita

 import React, { useState, useEffect } from 'react' const index = () => { const [active, setActive] = useState(false); console.log("render", active); setActive(false); return ( <div> </div> ) } export default index

Pero el siguiente código no tiene ningún problema aunque sigue llamando a setState.

 import React, { useState, useEffect } from 'react' const index = () => { const [active, setActive] = useState(false); console.log("render", active); useEffect(() => { setInterval(()=>{ console.log("run") setActive(true) },0); }, []) return ( <div> </div> ) }

¿setState activa la reproducción independientemente del valor del estado? Quiero saber la razón exacta por la que usar setState fuera de useEffect provoca un error.

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

0

Esto sucede porque, en el primer caso, cuando useEffect no se usa, está actualizando su estado justo después de declararlo. Incluso si está configurando el estado como falso nuevamente, pero para reaccionar, el estado se ha actualizado. Y la primera regla general para reaccionar es, si ocurre una actualización de estado, el componente se volverá a renderizar.

Es por eso que está obteniendo una reproducción infinita.

su código sigue el siguiente flujo:

  1. Declarar la variable de estado y pasar el valor como falso
  2. Actualizar estado a falso
  3. Estado actualizado, por lo tanto, componente renderizado.
  4. Paso 1 de nuevo.

En el segundo caso, cuando se usa el efecto de uso, su estado se actualizará solo cuando el componente esté montado, lo que significa que, después de eso, cualquier actualización de estado no activará su efecto de uso.

about 4 years ago · Juan Pablo Isaza Relatório

0

Basado en la documentación de React: https://reactjs.org/docs/hooks-reference.html#usestate

La función setState se utiliza para actualizar el estado. Acepta un nuevo valor de estado y pone en cola una nueva representación del componente.

Y hay una adición: https://reactjs.org/docs/hooks-reference.html#bailing-out-of-a-state-update

Si actualiza un State Hook al mismo valor que el estado actual, React se rescatará sin renderizar a los niños ni disparar efectos. (React usa el algoritmo de comparación Object.is). Tenga en cuenta que es posible que React aún necesite renderizar ese componente específico nuevamente antes de rescatar.

Y aquí está la parte importante: es posible que React aún necesite renderizar ese componente específico nuevamente antes de rescatar .

Entonces, sí, el componente aún puede volver a generarse incluso si los valores son los mismos.

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