Desafío de Codificación 10

Guía de useTimeout en React: ejecuta la última versión de callback sin reiniciar el timer y solo al cambiar delay; incluye ejemplo y prácticas para apps a medida e IA.

19 sept 2025 • 3 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Desafío de Codificación 10: crear un hook useTimeout sencillo que utilice setTimeout(callback, delay) y que reinicie el temporizador solo cuando cambie delay pero no cuando cambie callback.

Resumen del objetivo: queremos un hook que siempre invoque la versión más reciente de callback cuando el timeout se dispare, pero que no reinicie el contador si solo cambia la referencia de la función callback. En cambio, si cambia delay queremos cancelar el timeout anterior y crear uno nuevo. Si delay es null o undefined no debe arrancar ningún temporizador.

Paso 1 almacenar la última versión de callback en un ref para evitar que los cambios de referencia reinicien el temporizador: const savedCallback = useRef(callback); useEffect(() => { savedCallback.current = callback; }, [callback]);

Paso 2 manejar el delay con un useEffect que observe delay. Si delay es nulo o undefined no hace nada. Si tiene valor crea un setTimeout que al expirar llama a savedCallback.current. Además devuelve una función de limpieza que borre el timeout anterior cuando cambie delay o cuando el componente se desmonte: useEffect(() => { if (delay == null) return; const id = setTimeout(() => { savedCallback.current(); }, delay); return () => clearTimeout(id); }, [delay]);

Ejemplo final simplificado del hook y uso en un componente App: import React, { useEffect, useRef, useState } from 'react'; export function useTimeout(callback, delay) { const savedCallback = useRef(callback); useEffect(() => { savedCallback.current = callback; }, [callback]); useEffect(() => { if (delay == null) return; const id = setTimeout(() => { savedCallback.current(); }, delay); return () => clearTimeout(id); }, [delay]); } // Uso en App: export function App() { const [count, setCount] = useState(0); const [delay, setDelay] = useState(3000); useTimeout(() => { console.log('Timeout fired:', count); setCount(c => c + 1); }, delay); return <div><p>{count}</p><button onClick={() => setDelay(1000)}>Set delay to 1s</button><button onClick={() => setDelay(3000)}>Set delay to 3s</button></div>; }

Notas prácticas:

1. Guardar callback en un ref evita reinicios innecesarios del temporizador cuando la función cambia por re-renderings.

2. El useEffect que depende de delay es el que controla la creación y limpieza del timeout, por eso solo este efecto escucha delay en su array de dependencias.

3. Si quieres pausar el timeout pasa delay como null o undefined.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos expertos en desarrollo de software y aplicaciones a medida, ofreciendo soluciones en software a medida, aplicaciones a medida, inteligencia artificial y ciberseguridad. Desarrollamos productos robustos y escalables, desde agentes IA y soluciones de ia para empresas hasta integraciones con servicios cloud aws y azure y plataformas de inteligencia de negocio como power bi. Si tu proyecto requiere una solución personalizada para web, móvil o backend visita nuestros servicios de desarrollo de aplicaciones y software a medida y para soluciones de inteligencia artificial explora nuestra oferta de inteligencia artificial para empresas.

Palabras clave integradas naturalmente en el texto para mejorar posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Si necesitas soporte práctico para implementar este hook en tu código base o quieres que adaptemos la lógica a arquitecturas serverless, microservicios o integraciones con pipelines de datos y BI contacta a Q2BSTUDIO para recibir una propuesta a medida.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat