bind:this

bind:this es una interesante evolución de bind donde podemos directamente asociar todo un nodo DOM o un nodo Svelte a una variable de la que iría en la sección script de un componente, para poder interactuar con ese nodo desde código. Esto es algo que debería ser usado únicamente en situaciones en las que de otro modo no sería posible.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

En Svelte, bind:this es una herramienta que nos permite obtener referencias directas a elementos del DOM o a componentes completos, tratándolos como variables dentro de nuestro script. Esto resulta especialmente útil cuando queremos interactuar con un nodo HTML de forma directa, por ejemplo, para hacer focus en un input o manipular cualquier otro elemento.

Imaginemos que tenemos un input de tipo texto y queremos que, al pulsar un botón, el foco se coloque automáticamente en ese campo para que el usuario pueda empezar a escribir sin necesidad de hacer clic manualmente. Para lograr esto, podemos usar bind:this para enlazar el input a una variable declarada en el script, como input. De esta forma, cuando el componente se monte, esa variable apuntará al nodo DOM del input, y podremos llamar a métodos propios del elemento, como focus().

Veamos un ejemplo sencillo que ilustra esta idea:

<script>
  let input;

  function focus() {
    console.log('Buscar cosas hecho clic');
    if (input) {
      input.focus();
    }
  }
</script>

<input type="text" placeholder="Pon aquí algo" bind:this={input} />
<button type="button" on:click={focus}>Buscar cosas</button>

En este código, declaramos let input en el script y lo enlazamos al input mediante bind:this={input}. Cuando pulsamos el botón, se ejecuta la función focus, que primero imprime un mensaje en la consola y luego, si input está definido, llama a input.focus() para colocar el cursor en el campo de texto.

Pero bind:this no se limita solo a inputs. Podemos usarlo con cualquier elemento HTML, como un párrafo o un strong, para obtener su referencia y manipularlo si fuera necesario. Por ejemplo, si tenemos un párrafo con bind:this={hola}, podremos acceder a ese nodo desde el script y hacer un console.log(hola) para verificar que la referencia está correctamente asignada.

Es importante tener en cuenta que la variable a la que enlazamos con bind:this no tendrá valor hasta que el componente esté montado y el DOM esté disponible. Esto significa que si intentamos acceder a esa variable antes de que el componente se haya renderizado, obtendremos undefined. Por eso, si queremos hacer algo con esa referencia justo al inicio, debemos esperar a que el componente esté montado, por ejemplo, usando el hook onMount que Svelte ofrece para ejecutar código cuando el componente ya está listo.

En resumen, bind:this es una técnica poderosa para obtener acceso directo a elementos o componentes, pero debemos usarla con precaución y entender cuándo es apropiado. En muchos casos, para formularios, es más adecuado usar otros binds específicos como bind:value o bind:checked, que están diseñados para sincronizar datos de forma reactiva. Sin embargo, cuando necesitamos manipular el DOM directamente, como para hacer focus, bind:this es una solución sencilla y efectiva.

Lista de reproducción
  1. 1
    ¿Qué es Svelte?
    9 minutos
  2. 2
    ¿Cómo crear un proyecto de Svelte?
    7 minutos
  3. 3
    Creando nuestro primer componente
    7 minutos
  4. 4
    Datos dinámicos y props
    7 minutos
  5. 5
    Anidando componentes
    7 minutos
  6. 6
    Capturando eventos
    7 minutos
  7. 7
    Eventos y reactividad
    8 minutos
  8. 8
    Atributos condicionales e IF
    9 minutos
  9. 9
    Bucles
    11 minutos
  10. 10
    Bloques await
    7 minutos
  11. 11
    Bind
    8 minutos
  12. 12
    bind:this
    6 minutos
  13. 13
    ¿Para qué nos sirve un evento personalizado?
    6 minutos
  14. 14
    createEventDispatcher
    6 minutos
  15. 15
    Eventos con detalles
    7 minutos
  16. 16
    Reenviando eventos
    6 minutos
  17. 17
    Ejemplo de eventos (primera parte)
    12 minutos
  18. 18
    Ejemplo de eventos (y segunda parte)
    16 minutos
  19. 19
    Modificadores de eventos
    6 minutos
  20. 20
    Fundamentos del CSS con Svelte
    9 minutos
  21. 21
    Clases condicionales
    7 minutos
  22. 22
    Estilos en línea y variables CSS
    8 minutos
  23. 23
    Estilos globales
    6 minutos
  24. 24
    Importar hojas de estilo externas
    5 minutos
  25. 25
    Reactividad experta con el operador $
    8 minutos
  26. 26
    Slots (parte 1 de 2)
    5 minutos
  27. 27
    Slots (parte 2 de 2)
    7 minutos
  28. 28
    Directivas svelte:window, svelte:head, svelte:body
    4 minutos
  29. 29
    Actualizar de Rollbar a Vite 3
    11 minutos
  30. 30
    Exportar a Web Components
    10 minutos
  31. 31
    Integrar TypeScript, SCSS, PostCSS...
    8 minutos
  32. 32
    Hasta aquí (por ahora)
    3 minutos
  33. 33
    Lo que se viene con Svelte 5
    13 minutos