Diferencia entre data y ref en Vue
Clase 21 de 37 • Curso de Reactividad con Vue.js 3
Contenido del curso
Reactividad a profundidad
- 6

Paradigma reactivo: responsivo, resiliente y escalable
03:49 min - 7

Proxies: la clave de la reactividad Vue
06:29 min - 8

Creando tu primer mini framework reactivo
07:04 min - 9

Integrar Proxy para crear mini framework reactivo
06:06 min - 10

Refleja tu lógica mantenible con JavaScript
09:29 min - 11

Conceptos clave de reactividad: efectos, track y trigger
03:53 min - 12

Efectos trackers triggers: cómo Vue vincula datos
07:39 min
Templates de Vue.js
- 13
Templates de HTML en Vue.js: Mejores Prácticas Esenciales
00:21 min - 14

Estructura inicial de Platzy Commerce con Vue
06:52 min - 15

Expresiones JavaScript en templates Vue
06:49 min - 16

v-bind y clase reactiva en Vue.js
06:08 min - 17

v-show vs v-if en Vue: cuándo usar cada uno
08:53 min - 18

Directiva v-for para listas en Vue.js
08:14 min - 19

Eventos con v-on en templates de Vue
06:49 min
APIs internas de Vue.js
Segunda capa: componentes de Vue.js
- 25

Crear componentes reutilizables con Vue
06:56 min - 26

Cómo pasar datos de padre a hijo en Vue
14:13 min - 27
Creación de Componentes Personalizados en Aplicaciones Web
00:37 min - 28

Eventos personalizados en Vue: comunicar hijo a padre
04:27 min - 29

Eventos personalizados con Composition API
03:57 min - 30

Watchers en Vue Options API
08:53 min - 31

Watchers en Vue Composition API
08:19 min - 32

Computed properties vs watchers en Vue
05:17 min - 33

Computed en Vue Composition API
06:20 min - 34

Ciclos de vida en Vue: cuándo y cómo cargar datos
08:19 min - 35

Ciclos de vida en Composition API
06:03 min
Siguientes pasos
Comprende con claridad cómo pasar de Options API a Composition API en Vue y domina la reactividad con data, ref y la función setup. Aquí verás, paso a paso, cómo se define la información reactiva, por qué aparece .value y cómo Vue desempaqueta referencias en el template para mantener todo sencillo.
¿Qué cambia entre options api y composition api?
Trabajar con Composition API significa mover la lógica a la función setup. Allí accedes a los módulos reactivos internos de Vue y, en particular, a ref, que crea referencias reactivas simples para números, strings, booleanos, arreglos u objetos. Ya no defines un objeto data: centralizas la reactividad y funciones dentro de setup y retornas lo necesario al template.
¿Cómo se ve el paso de data a ref en código?
// Options API (esquema)
export default {
data() {
return {
product: { /* info del producto */ },
activeImage: 0,
cartOpen: false,
carrito: []
}
}
}
// Composition API (equivalente funcional)
export default {
setup() {
const product = ref({ /* igual que en Options API */ })
const activeImage = ref(0)
const cartOpen = ref(false)
const carrito = ref([])
// Ejemplo de cambio reactivo diferido
setTimeout(() => {
activeImage.value = 1
}, 2000)
// Exponer al template
return { product, activeImage, cartOpen, carrito }
}
}
- En Options API, data es un proxy observado por Vue.
- En Composition API, ref crea referencias reactivas simples.
- En setup, siempre se retorna un objeto con lo que el template necesita.
¿Cómo exponer datos al template desde setup?
Debes retornar un objeto con las referencias y funciones que quieras usar en el template. Esas claves estarán disponibles como si fueran propiedades del componente.
- Retorna:
product,activeImage,cartOpen,carrito. - Quedarán accesibles sin
.valueen el template. - Mantienes la organización y escalas la lógica de forma clara.
¿Cómo funcionan los ref y por qué usan .value?
Un ref es una instancia interna de Vue basada en una clase llamada ref implementation. Internamente guarda el dato en la propiedad value. Vue observa ese value para disparar efectos cuando cambia, igual que observa las propiedades del proxy de data en Options API.
¿Cuándo usar .value y cuándo no?
- En JavaScript dentro de setup: usa
miRef.valuepara leer o escribir. - En el template: Vue desempaqueta la referencia y no necesitas
.value.
// Dentro de setup
activeImage.value = 1 // cambia el valor observado
// En el template (no necesitas .value)
// {{ activeImage }}
- ref admite: números, strings, booleanos, arreglos y objetos.
- Vue observa value y recalcula los efectos del template al cambiar.
- No cambias el HTML existente: el desempaquetado automático mantiene todo limpio.
¿Cómo organizar el proyecto para comparar ambos enfoques?
Para contrastar comportamiento sin romper nada, crea dos carpetas paralelas y replica los archivos.
¿Qué pasos seguir para una prueba lado a lado?
- Crea la carpeta de Options API y la de Composition API.
- Copia y pega los archivos base en ambas carpetas.
- En la versión Composition, mueve la lógica a setup y usa ref.
- Retorna
product,activeImage,cartOpen,carritodesde setup. - Abre la carpeta de Composition en el navegador: el resultado debe ser equivalente.
Habilidades y conceptos trabajados: reactividad con proxies en data, referencias reactivas con ref, estructura de setup y retorno de contexto, observación de value, efectos en el template, uso de setTimeout para demostrar cambios reactivity-driven, y organización del código en módulos internos de Vue.
¿Quieres profundizar en otro patrón de reactividad o tienes una duda puntual sobre setup y ref? Cuéntalo en comentarios y seguimos la conversación.