Uso de Context en la Función Setup de Vue.js

Clase 18 de 23Curso de Vue.js: Componentes y Composition API

Resumen

¿Qué es el contexto en Vue.js y cómo funciona?

Vue.js es un framework de JavaScript que permite crear interfaces web interactivas. Un elemento esencial en la funcionalidad de los componentes de Vue es el contexto, el cual proporciona varias herramientas para gestionar propiedades y eventos en los componentes. Este contexto forma parte del segundo argumento de la función setup y ofrece una serie de datos valiosos.

¿Cuáles son los elementos clave de context?

Cuando usamos setup en un componente, podemos acceder a cuatro elementos proporcionados por context: attrs, emit, expose y slots.

  • Attrs: Representa los atributos que recibe el componente que no son declarados como props. A diferencia de las props, los atributos no son reactivos. Por ejemplo, si un componente recibe atributos que no fueron declarados como props en Vue.js, se consideran automáticamente como atributos.

  • Emit: Esta función es utilizada para emitir eventos desde el componente. La sintaxis ha cambiado ligeramente con respecto a Vue 2, al no requerir el símbolo this.. Emit permite pasar el nombre del evento y sus parámetros.

  • Expose: Permite hacer accesibles ciertas variables internas del componente a otros componentes, expose debe ser llamado una única vez y permite definir qué valores se pueden exponer, facilitando que otros elementos accedan a ellos.

  • Slots: Proporciona acceso a los slots del componente, permitiendo la personalización del contenido dentro de un componente desde otros elementos.

¿Cómo utilizar el context en Vue.js?

Al usar el context de Vue.js, hay diferentes formas de manejarlo dentro de nuestro código.

  • Podemos acceder a los elementos de context usando la notación de objeto o la destructuración de ECMAScript. Así, es posible, por ejemplo, acceder a los attrs directamente como si fueran variables.
const { emit, expose } = context;
  • La función expose se puede utilizar de la siguiente manera dentro de la función setup para publicar variables específicas:
expose({
  fullName,
});

¿Qué limitaciones tiene la función setup?

La función setup tiene ciertas restricciones debido a que se ejecuta antes del ciclo de vida del componente. Esto afecta su capacidad para interactuar con algunos elementos tradicionales de Vue.js, como:

  • Refs: No se puede usar this.refs porque setup no tiene acceso a la instancia completa del componente.
  • Métodos de opción API: Métodos tradicionales definidos fuera de setup no están accesibles dentro de ella.
  • Data y Computed: Necesitamos utilizar reactividad proporcionada por Composition API (como ref, reactive) ya que los métodos tradicionales que dependen de this no están disponibles.

Para contrarrestar estas limitaciones, podemos definir funciones y convertibles de JavaScript dentro de setup para manejar métodos y reactividad.

Recomendaciones prácticas

Para trabajar eficazmente con setup y context en Vue.js 3, es fundamental:

  • Asegurarse de convertir las props y datos en elementos reactivos usando herramientas como ref, reactive, o toRefs.
  • Definir funciones directas dentro de setup para mantenerlas accesibles y utilizables.
  • Familiarizarse con la Composition API para maximizar las capacidades de reactividad de Vue.js.

Este enfoque otorga mayor control y flexibilidad, permitiendo un código más limpio y en armonía con la esencia de JavaScript, acercándose a "vanilla JS".