Directiva v-for para listas en Vue.js
Clase 18 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
Viendo ahora - 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
Aprende a dominar el list rendering en Vue.js para que tu carrito refleje productos reales sin trabajo manual. Conecta tu data al template, usa la directiva before, define un key único y aprovecha el índice para imágenes y estilos dinámicos.
¿Cómo conectar la data del carrito para renderizar listas en Vue.js?
Para dejar de maquetar productos a mano, se define en la data una propiedad carrito como arreglo con múltiples productos. Cada objeto incluye nombre, precio, stock e imágenes. Con esta estructura, el template puede iterar y tomar el valor de cada campo sin duplicar HTML.
- Define carrito como arreglo de objetos con productos.
- Reutiliza nombre y precio; el stock puede quedar igual por ahora.
- Conecta el arreglo al template para que todo sea dinámico.
¿Por qué el template refleja nombre, precio e imágenes sin repetir HTML?
Porque al iterar, cada bloque hereda el contexto del elemento actual (por ejemplo, product). Así, expresiones como product.name o product.images[0] se resuelven por producto.
- El contexto interno es el objeto actual del arreglo.
- Cada campo en el HTML toma su valor del producto correspondiente.
¿Qué hace la directiva before y por qué usar key único en el virtual dom?
La directiva before recorre los elementos del arreglo y asigna un alias legible, por ejemplo, product. Además, se debe indicar un key único por elemento para que Vue gestione cambios y reordenamientos en el virtual dom correctamente.
<!-- Iterar productos del carrito -->
<div before="product in carrito" :key="product.name">
<h3>{{ product.name }}</h3>
<p>{{ product.price }}</p>
<!-- contenido del producto -->
</div>
- Usa un alias claro: product.
- El key debe ser único: product.name.
- El key ayuda a Vue a detectar cambios y reordenamientos.
¿Cómo acceder al contexto product dentro del template?
Todo lo que se escribe dentro del bloque iterado usa el contexto de product. Así, puedes mostrar imágenes, nombre y precio sin repetición manual.
- product.images[0] accede a la primera imagen.
- product.name y product.price pintan sus valores.
¿Cómo usar el índice para thumbnails, active image y estilos dinámicos?
Al iterar las imágenes de cada producto, es útil capturar el índice. Esto permite reemplazar referencias estáticas (como images[0]) por una referencia dinámica y controlar estados como active image.
<!-- Iterar thumbnails por producto -->
<div before="(image, index) in product.images" :key="image">
<img :src="image" :class="{ active: index === activeImage }" />
</div>
- El segundo parámetro de before es el índice.
- El key puede ser la URL de la imagen.
- active image depende del índice definido en la información.
¿Cómo alternar estilos con índice impar o par?
Puedes aplicar una clase dinámica para diferenciar filas en el carrito. Se activa, por ejemplo, cuando el índice es impar.
<div before="(product, index) in carrito" :key="product.name"
:class="{ 'background gray': index % 2 !== 0 }">
<!-- contenido del producto -->
</div>
- Clase dinámica: se evalúa con una condición booleana.
- Índice impar: index % 2 !== 0.
- Efecto visual rápido para mejorar legibilidad.
¿Qué habilidades y conceptos quedan claros para tu flujo de trabajo?
- List rendering: recorrer arreglos en el template con before.
- Alias de elemento: product para legibilidad y alcance del contexto.
- key único: estabilidad en el virtual dom y reordenamiento fiable.
- Índice: controla thumbnails, active image y estilos condicionales.
- Clases dinámicas: activar background gray en filas impares.
¿Te quedó alguna duda sobre before, key o el manejo del índice en imágenes y estilos? Comparte tu pregunta y el fragmento de tu código para ayudarte mejor.