Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
¿Cómo la función devuelta no destruye el detector de eventos en useEffect?

Hice este gancho personalizado para obtener el ancho de la ventana. Está funcionando pero tengo una pregunta. useEffect para agregar un detector de eventos a la window en el montaje del componente. Pero luego mi amigo me sugirió que usara la función de return para eliminar el detector de eventos. ¿Cómo funciona esto? ¿La función devuelta no debería destruir el detector de eventos y hacer que no funcione? ¿Ya que esto está sucediendo una vez en el montaje del componente?

 import React from "react"; const useWindowSize = () => { const [windowSize, setWindowSize] = React.useState({ width: window.innerWidth, height: window.innerHeight, }); const windowResize = () => { setWindowSize({ width: window.innerWidth, height: window.innerHeight, }); }; React.useEffect(() => { window.addEventListener("resize", windowResize); return () => { window.removeEventListener("resize", windowResize); }; }, []); return windowSize; }; export default useWindowSize;
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

La función devuelta dentro de useEffect se ejecuta justo antes de que se desmonte su componente. No se ejecuta en el montaje.

Sin esta función devuelta, cada vez que su componente se vuelve a renderizar, si no tuviera esa dependencia de matriz vacía, y cuando se desmonta y se monta, se agrega un nuevo EventListener en la memoria (lo cual es malo).

about 4 years ago · Juan Pablo Isaza Report

0

Esta devolución de llamada a cambio de useEffect se llama en unmount . Lo que significa que eventListener se elimina cuando su componente ya no se procesa, o cuando se "vuelve a montar" (se cambió la propiedad clave). Esto es importante porque sin eliminar el detector de eventos, habrá varios detectores de eventos iguales enganchados al mismo tiempo.

about 4 years ago · Juan Pablo Isaza Report

0

¿No debería devolver la función destruir el detector de eventos y hacer que no funcione? ya que esto está sucediendo una vez en el montaje del componente?

La función de retorno se ejecutará en su caso cuando el componente que usa el gancho se desmonte (debido a la matriz vacía como dependencias). Así que en ese momento tiene sentido anular el registro del oyente, supongo. Máslectura .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!