Vue Performance
v-for with Ionic Components
When using v-for
with Ionic components, we recommend using Vue's key
attribute. This allows Vue to re-render loop elements in an efficient way by only updating the content inside of the component rather than re-creating the component altogether.
By using key
you can provide a stable identity for each loop element so Vue can track insertions and deletions within the iterator. Below is an example of how to use key
:
<template>
<ion-page>
<ion-content>
<ion-item v-for="item of items" :key="item.id">
<ion-label>{{ item.value }}</ion-label>
</ion-item>
</ion-content>
</ion-page>
</template>
<script>
import { IonContent, IonItem, IonLabel, IonPage } from '@ionic/vue';
import { defineComponent } from 'vue';
export default defineComponent({
components: {
IonContent,
IonItem,
IonLabel,
IonPage
},
setup() {
const items = ref([
{ id: 0, value: 'Item 0' },
{ id: 1, value: 'Item 1' },
...
]);
return { items }
}
});
</script>
In this example, we have an array of objects called items
. Each object contains a value
and an id
. Using the key
attribute, we pass the item.id
for each object. This id
is used to provide a stable identity for each loop element.
For more information on how Vue manages state with v-for
see https://v3.vuejs.org/guide/list.html#maintaining-state