Imagina que construyes una app con botones, formularios y casillas de verificación. Tarde o temprano aparece la gran pregunta: cómo se comunican realmente mis componentes. En Svelte, la comunicación padre e hijo sucede en dos direcciones y con un tercer modo compartido: el padre envía datos hacia abajo con props, el hijo avisa hacia arriba con eventos y ambos pueden editar el mismo estado con enlaces o bindings. Aquí nos centraremos en eventos y bindings para dominar el flujo de datos en todas las direcciones.
Recordatorio de estructura del proyecto: coloca los componentes reutilizables en la carpeta src lib y pruébalos en src routes +page.svelte, que actúa como página de entrada. Las rutas viven en src routes.
Eventos, hijos hablando con padres. Las props sirven para comunicación descendente, pero cuando el hijo necesita avisar de que pasó algo, los eventos entran en juego. El modelo mental es simple: props equivalen a instrucciones del padre hacia el hijo, eventos equivalen a notificaciones del hijo hacia el padre. En Svelte 5 ya no necesitas createEventDispatcher, basta con pasar funciones de callback como props y el hijo las invoca cuando ocurre la acción. Ejemplo conceptual 1: un botón hijo expone una prop onHello; al hacer clic, el hijo ejecuta onHello y el padre muestra una alerta o actualiza su estado. Ejemplo conceptual 2: un formulario hijo expone onSubmit; al enviar, pasa un paquete de datos por ejemplo un objeto con name y el padre recibe ese dato de forma directa. Recuerda usar el modificador preventDefault al enviar formularios para evitar recargas y mantener la experiencia SPA.
Desglose de eventos en dos pasos. En el hijo declaras una prop de callback como onHello u onSubmit y la invocas cuando corresponda, idealmente comprobando que exista. En el padre pasas la función adecuada por prop y reaccionas a la llamada del hijo. Piensa en ello como un megáfono que el padre entrega al hijo para que este le avise cuando algo relevante ocurra. Hay pings simples sin datos y pings con mochila de datos, según necesites.
Bindings, compartiendo estado. A veces eventos y props generan demasiado vaivén. Para estados que deben sincronizarse al instante entre padre e hijo, Svelte 5 ofrece bindings. Ingrediente 1, la utilidad $bindable, que marca una prop del hijo como enlazable en dos direcciones. Ingrediente 2, la sintaxis bind para enlazar propiedades. Por ejemplo, bind value en campos de texto, bind checked en checkboxes, bind open en la etiqueta details. Cuando una prop del hijo se declara con $bindable y el padre usa bind nombrePropiedad, ambos comparten la misma fuente de verdad.
Ejemplo conceptual de binding con texto. Un componente TextInput define la prop text con $bindable y su input interno enlaza text con bind value. En el padre, bind text igual a name conecta el estado local con el hijo. Si el usuario teclea, cambia name en el padre al instante. Si el padre actualiza name, el input se refresca automáticamente. Ejemplo conceptual de binding con checkbox. Un componente CheckBox expone la prop checked con $bindable y su input tipo checkbox usa bind checked. El padre enlaza esa prop con una variable booleana y así el estado se mantiene sincronizado sin eventos extra.
Cuándo usar eventos y cuándo usar bindings. Usa eventos cuando importe notificar acciones puntuales como clics de botones o envíos de formularios, y cuando el padre necesite reaccionar una sola vez a un suceso. Usa bindings cuando un campo de texto, un selector, un slider o un checkbox deba mantenerse sincronizado en tiempo real con el estado del padre. En resumen, eventos son notificaciones, bindings son estado compartido en vivo.
Aspectos clave y errores comunes. 1 Los nombres de callbacks son sensibles a mayúsculas y minúsculas. Si el hijo espera onHello, el padre debe pasar exactamente onHello. 2 No olvides invocar el callback desde el hijo cuando suceda la acción. Declarar la prop no dispara nada por sí mismo. 3 Los bindings funcionan solo con propiedades soportadas como value en inputs y selects, checked en checkbox y radio, open en details o propiedades de medios como currentTime y paused. Consulta la documentación oficial de Svelte en guía de bind. 4 No enlaces todo. Emplea bindings para campos e interacciones continuas y usa eventos para acciones de mayor nivel como guardar o enviar. 5 No intentes enlazar valores derivados. Bind debe apuntar a variables de estado reales como las creadas con $state o a props marcadas con $bindable. Calcula valores derivados por separado.
Resumen. Props reparten datos desde el padre hacia el hijo, eventos llevan notificaciones desde el hijo al padre y bindings permiten que ambos compartan la misma libreta de estado. Con estas tres piezas cubres la mayoría de necesidades reales de comunicación entre componentes en Svelte.
Cómo lo aplicamos en proyectos reales. En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida con componentes Svelte bien orquestados, integrando formularios complejos, validaciones y flujos UI reactivos que combinan eventos y bindings de forma limpia. Nuestro equipo especialistas en inteligencia artificial, ciberseguridad y servicios cloud aws y azure crea interfaces robustas y seguras donde el estado fluye sin fricción. Si necesitas una app modular, mantenible y lista para escalar, visita nuestro servicio de desarrollo de aplicaciones a medida y cuéntanos tu caso.
Además de frontends modernos, ofrecemos servicios inteligencia de negocio con power bi, automatización de procesos, ia para empresas con agentes IA, auditorías de ciberseguridad y pentesting, y despliegues en servicios cloud aws y azure. Te ayudamos a conectar la interfaz con tu back, a diseñar arquitectura de estados predecible y a integrar analítica en tiempo real para tomar decisiones con datos.
Consejo final. Empieza por modelar el flujo de datos y distingue claramente entre notificaciones puntuales y sincronización continua. Emplea callbacks para acciones discretas y bindings cuando necesites espejo instantáneo entre padre e hijo. Con esta guía tendrás una base sólida para crear componentes reutilizables, previsibles y fáciles de probar, mientras tu negocio gana velocidad y calidad en la entrega de funcionalidades.