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

237
Visualizações
¿Por qué useEffect se ejecuta una vez que window.innerWidth cambia a pesar de que el segundo parámetro es una matriz vacía?

useEffect en este código se ejecuta cada vez que cambia el tamaño de la ventana, pero el segundo parámetro en useEffect es una matriz vacía, pensé que mientras el segundo parámetro no cambie en comparación con la última vez, useEffect no se ejecutará

 import React from "react" export default function WindowTracker() { const [windowWidth, setWindowWidth] = React.useState(window.innerWidth) React.useEffect(() => { window.addEventListener("resize", function() { setWindowWidth(window.innerWidth) }) }, []) return ( <h1>Window width: {windowWidth}</h1> ) }

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

0

No es que se ejecute useEffect , sino la devolución de llamada del detector de eventos registrado. useEffect hecho se ejecuta una vez y registra el detector de eventos una vez. Pero luego, se llama a la devolución de llamada del oyente.

Le dijiste al detector de eventos que escuche para resize el tamaño, ¿verdad? Por lo tanto, debe esperar que se llame cada vez que se produzca un cambio de resize .

Además, si devuelve la función de su efecto, se ejecutará cuando el componente se desmonte (debido a las dependencias vacías); puedes usar eso para eliminar el oyente:

 React.useEffect(() => { let cb = function () { setWindowWidth(window.innerWidth); }; window.addEventListener("resize", cb); return () => { window.removeEventListener("resize", cb); }; }, []);
about 4 years ago · Juan Pablo Isaza Relatório

0

Si console.log dentro de useEffect, verá que en realidad se ejecutará solo una vez. Básicamente, ha configurado una vez el detector de eventos para el evento de cambio de tamaño. Pero aún tiene el detector de eventos registrado en su lugar, que funciona como se supone que debe hacerlo.

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