<script setup>
import {ref, computed} from "vue";
const people = ref([
{id: 1, firstName: 'Constantin', lastName: 'Druc'},
{id: 2, firstName: 'Jack', lastName: 'Dorsey'},
{id: 3, firstName: 'Bill', lastName: 'Burr'},
{id: 4, firstName: 'Hugh', lastName: 'Jackman'},
{id: 5, firstName: 'Tracey', lastName: 'Johnes'},
]);
function fullName(firstName, lastName) {
console.log('fullName() was executed');
return firstName + ' ' + lastName;
}
</script>
<template>
<ul>
<li v-for="person in people" :key="person.id">
{{ fullName(person.firstName, person.lastName) }}
</li>
</ul>
</template>
<script setup>
import {ref, computed} from "vue";
const people = ref([
{id: 1, firstName: 'Constantin', lastName: 'Druc'},
{id: 2, firstName: 'Jack', lastName: 'Dorsey'},
{id: 3, firstName: 'Bill', lastName: 'Burr'},
{id: 4, firstName: 'Hugh', lastName: 'Jackman'},
{id: 5, firstName: 'Tracey', lastName: 'Johnes'},
]);
const newPeople = computed(() => {
console.log('newPeople was executed');
return people.value.map(person => {
return {
...person,
fullName: person.firstName + ' ' + person.lastName
}
})
});
</script>
<template>
<ul>
<li v-for="person in newPeople" :key="person.id">
{{ person.fullName }}
</li>
</ul>
</template>
functions called within vue templates will execute every time the component re-renders.