¿Cómo se usan los template refs en Vue.js con Composition API?
En el mundo del desarrollo web, conocer las herramientas adecuadas puede ser la diferencia entre un código propenso a errores y uno eficiente y sofisticado. Vue.js, con su API de Composition, ofrece a los desarrolladores una manera potente de interactuar y manipular elementos HTML a través de sus refs, o referencias de plantillas. Aprender a usar las template refs con la Composition API es esencial para sacar el máximo provecho a este framework.
¿Qué son los template refs?
Los template refs en Vue.js son referencias directas a elementos del DOM o componentes dentro de tus plantillas. En el Options API clásico, se accedía a estos elementos utilizando this.$refs, permitiéndote manipular y acceder a cualquier propiedad del mismo. Sin embargo, en la Composition API, la forma de trabajar con estas referencias cambia, ofreciendo un acceso más reactivo y programático.
¿Cómo crear una referencia de plantilla?
Para crear una referencia en Composition API, debes usar el API de ref. Aquí te mostramos cómo crear una referencia para un botón en tu plantilla:
<script>import{ ref, watch }from'vue';exportdefault{setup(){// Crear una referencia reactivaconst btn =ref(null);// Exportar la variable para accederla desde el templatereturn{ btn };}};</script>
¿Cómo acceder al valor de un template ref?
Una vez que el componente se monte y la referencia del template esté lista, se puede acceder al valor actual del elemento HTML utilizando .value. Este patrón permite manipular el DOM de manera reactiva y flexible.
// Acceso al valor del template refconsole.log(btn.value);
¿Cómo detectar cambios en el valor de una referencia?
Dado que las referencias pueden cambiar una vez que el componente se ha montado, es crucial manejar estos cambios de manera efectiva. Se utiliza normalmente watch para detectar y responder a los cambios:
watch(btn,(newVal)=>{console.log(newVal);// Imprime el nuevo valor cuando el botón se monta en el DOM.});
¿Por qué usar Composition API en lugar de Options API?
Hay varias razones para considerar el uso de Composition API:
Modularidad y Reusabilidad: Facilita la estructura y división del código en funciones reutilizables.
Mejor control del ciclo de vida:setup se ejecuta antes de que el componente se monte, ofreciendo control temprano del estado.
Mayor claridad: La separación lógica mejora la claridad en aplicaciones grandes y complejas.
Vue.js, con su Composition API y el uso de template refs, provee a los desarrolladores herramientas poderosas para crear aplicaciones web adaptativas y reactivas. No dudes en seguir explorando y experimentando para encontrar tu flujo óptimo de trabajo con Vue.js. ¡Sigue aprendiendo y expandiendo tus conocimientos para convertirte en un experto en Vue.js!
En el ejemplo se asigna ref="btn" al elemento botón. ¿Sería posible asignar ref="btn2" a otro elemento?¿Cómo quedaría el ejemplo? No me queda claro pues se ha definido la variable btn como ref(null)
Gracias
Si es posible, se crearía una variable por ref, el nombre de la variable, es lo que usas en el atributo ref del template.
Entiendo. Supongo que acepta Null porque solo hay un ref en la plantilla.
Apuntes de lo que entendi:
Si nuestra var es un objeto html se debe definir como null primero, luego que setup cargue , con la ayuda de algun hook del ciclo de vida o con un Watcher podremos ver su verdadero valor
Me ha costado pero poco a poco veo las ventajas entre Composition API vs Options API
No he tenido momentos de uso con el ref() pero de mis notas ya no lo saca nadie jeejen xD
Como aporte, que sepan que además del watcher para esperar que el valor cambie, también podemos utilizar un ciclo de vida onMounted para exactamente lo mismo, ya que cuando el componente esté montado ya podremos acceder al elemento.