Intro


En esta ocasión vamos a ver como vincular y renderizar una lista HTML desde un array de datos de nuestro data(). La pregunta es: ¿cómo mostramos ese array como una lista HTML?

[js title=»app.js» highlight=»5″]
const app = Vue.createApp({
data() {
return {

games: [‘Grand Turismo’, ‘FIFA’, ‘GTA’]
}
}
})
[/js]

Recorrer Array de Datos (v-for)


Vamos a empezar creando una lista desordenada en nuestro index.html. En la etiqueta li es donde vamos a añadir otra directiva de Vue: v-for

[html title=»index.html»]
<ul>
<li v-for="game in games">{{ game }}</li>
</ul>
[/html]

Dentro de la expresión v-for escribimos game in games. Aquí, games nos referimos al array en nuestro data() y game es un alias para el elemento actual del array en el que nos encontramos, mientras lo recorremos para imprimir un nuevo li.


Cada li mostrará cada elemento del array porque dentro escribimos la expresión: {{ game }} que imprime cada juego.

Si comprobamos nuestra App en el navegador veremos la lista de juegos renderizada correctamente.



Pero, ¿como funciona la directiva v-for?

Recorrer array de objetos (v-for)


Vamos a completar nuestro array con objetos en lugar de solo nombres:

[js title=»app.js» highlight=»5″]
const app = Vue.createApp({
data() {
return {

games: [
{
id: 1,
name: "Grand Turismo",
score: 87,
},
{
id: 2,
name: "FIFA",
score: 65,
},
{
id: 3,
name: "GTA",
score: 90,
}
],
}
}
})
[/js]

Ahora tenemos un array que contiene un objeto para cada uno de los games. Cada juego contiene un id, un name y un score. En la siguiente tarea, usaremos el score para imprimirlo en cada game, y el id para ayudar a Vue a realizar un seguimiento de los elementos de nuestra lista HTML.

[html title=»index.html»]
<ul>
<li v-for="game in games" :key="game.id">
{{ game.name }} – {{ game.score }}
</li>
</ul>
[/html]

Fíjate como estamos usando la «dot notation» para imprimir cada game a medida que recorremos el array de games. Pero, ¿qué hace el atributo :key?

Atributo :key Esencial en los elementos de una lista


Al añadir el atributo :key="game.id", usamos la abreviatura de v-bind para vincular el id del game al atributo :key. Esto le da a cada elemento del DOM una clave única para que Vue pueda captar el elemento y no perderlo de vista a medida que las cosas se actualizan dentro de la App.

Esto proporciona algunas mejoras de rendimiento, y más adelante, si estás haciendo algo como animar los elementos, te darás cuenta que el atributo :key ayuda a Vue a administrar de manera efectiva sus elementos a medida que se mueven por el DOM.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

dieciseis − 16 =