Usa useEffect como un profesional con AbortSignal

Gestión de suscripciones en React sin removeEventListener manual: usa AbortController/AbortSignal en useEffect y un hook como useEffectScoped para mayor limpieza y mantenibilidad.

15 sept 2025 • 3 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Si suscribes eventos de esta forma debes seguir leyendo. Muchos desarrolladores usan useRef y useEffect para añadir event listeners y luego eliminarlos manualmente en el cleanup. Un patrón común es crear funciones onDrag y onDrop, llamar a ref.current.addEventListener y en el return del useEffect ejecutar ref.current.removeEventListener para cada suscripción. Esto funciona, pero puede generar mucho código repetitivo y ser propenso a olvidos cuando hay muchas suscripciones o cuando se integran librerías de terceros que no son React.

En lugar de depender siempre de removeEventListener es más limpio y moderno usar AbortSignal y AbortController. AbortSignal es un objeto que puede pasarse a fuentes de eventos compatibles, ya sea addEventListener o APIs de suscripción, y permite cancelar todas las suscripciones asociadas llamando a abortController.abort. De ese modo no hace falta llevar un registro manual de cada unsubscribe.

Mejora práctica del useEffect: dentro del efecto crea un AbortController, extrae el signal y pásalo a cada addEventListener. Al devolver en el cleanup una llamada a abortController.abort todas las suscripciones se cancelan de forma segura. En palabras sencillas: crear un abortController por efecto, pasar signal a cada suscripción y abortar al desmontar.

Para abstraer este patrón y reducir aún más código es útil un hook personalizado que gestione el ciclo del AbortController. Un ejemplo conceptual es useEffectScoped que recibe un callback al que se le pasa el signal. El hook crea el AbortController, llama al callback con el signal y en el cleanup aborta el controller. De este modo el componente queda muy limpio y las suscripciones se declaran sin preocuparse por el unsubscribe individual.

Ventajas de esta aproximación: menos código repetido, menor probabilidad de fugas de memoria, integración más segura con APIs modernas como ResizeObserver o IntersectionObserver, y una forma clara de encapsular suscripciones procedentes de librerías externas. Además encaja bien con prácticas de desarrollo de aplicaciones a medida y software a medida donde la robustez y la mantenibilidad son clave.

Ejemplo conceptual de uso en un componente: crear ref con useRef, llamar a useEffectScoped pasando un callback que verifica ref.current y añade listeners usando el signal proporcionado. No hace falta invocar removeEventListener para cada suscripción porque abortController.abort lo gestionará.

Si trabajas con observadores de tamaño utiliza ResizeObserver, y para detectar entrada en el viewport usa IntersectionObserver. Cuando debes integrar una librería externa que expone suscripciones manuales, envolver esas suscripciones en un AbortSignal o un patrón similar simplifica la limpieza y reduce errores.

En Q2BSTUDIO solemos aplicar este tipo de buenas prácticas al desarrollar soluciones empresariales. Somos una empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud. Si buscas crear productos robustos y seguros podemos ayudarte tanto en el desarrollo de aplicaciones como en la integración de Desarrollo de aplicaciones a medida como en proyectos de inteligencia artificial para empresas.

Palabras clave relevantes que aplicamos en nuestros proyectos incluyen aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Ofrecemos servicios integrales que van desde la planificación y desarrollo hasta la seguridad, automatización y despliegue en la nube.

Si quieres que revisemos tu código o que diseñemos una arquitectura que use patrones como AbortSignal y hooks personalizados para mejorar la calidad y estabilidad, en Q2BSTUDIO podemos ayudar con consultoría, desarrollo y puesta en producción.

Resumen rápido: evita el unsubscribe manual cuando puedas, usa AbortController y AbortSignal dentro de useEffect, abstrae el patrón en un hook reutilizable y así simplificas la lógica de limpieza y aumentas la mantenibilidad de tus aplicaciones.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.