VueJS - Proprietà Calcolate: Una Guida per Principianti

Ciao هناك, futuro supereroe di Vue.js! Oggi ci imbarcheremo in un viaggio emozionante alla scoperta delle Proprietà Calcolate in Vue.js. Non preoccuparti se sei nuovo alla programmazione - sarò il tuo guida amichevole, e procederemo passo dopo passo. Alla fine di questo tutorial, resterai sorpreso da quanto hai imparato!

VueJS - Computed Properties

Cos'è una Proprietà Calcolata?

Immagina di stare cuocendo un cake. Hai ingredienti (data) e segui una ricetta (logica) per creare qualcosa di delizioso (proprietà calcolata). In Vue.js, le proprietà calcolate sono come ricette magiche di cake che si aggiornano automaticamente ogni volta che i loro ingredienti cambiano!

Iniziamo con un esempio semplice:

<template>
<div>
<p>Nome: {{ firstName }}</p>
<p>Cognome: {{ lastName }}</p>
<p>Nome Completo: {{ fullName }}</p>
</div>
</template>

<script>
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe'
}
},
computed: {
fullName() {
return this.firstName + ' ' + this.lastName
}
}
}
</script>

In questo esempio, fullName è la nostra proprietà calcolata. È come una ricetta intelligente che combina firstName e lastName per darci un nome completo. La parte migliore? Ogni volta che firstName o lastName cambia, fullName si aggiorna automaticamente!

Perché Usare le Proprietà Calcolate?

  1. Semplicità: Mantengono il tuo template pulito e facile da leggere.
  2. Performance: Vue mette in cache il risultato e lo ricalcola solo quando le dipendenze cambiano.
  3. Affidabilità: Si aggiornano automaticamente quando le loro dipendenze cambiano.

Proprietà Calcolate vs Metodi

"Ma aspetta," potresti dire, "non potremmo usare un metodo invece?" Ottima domanda! Confrontiamo:

<template>
<div>
<p>Calcolato: {{ reversedMessage }}</p>
<p>Metodo: {{ reverseMessage() }}</p>
</div>
</template>

<script>
export default {
data() {
return {
message: 'Ciao, Vue!'
}
},
computed: {
reversedMessage() {
return this.message.split('').reverse().join('')
}
},
methods: {
reverseMessage() {
return this.message.split('').reverse().join('')
}
}
}
</script>

Both reversedMessage and reverseMessage() do the same thing. But here's the secret sauce: computed properties are cached. If message doesn't change, reversedMessage won't recalculate. It's like having a super-efficient assistant who remembers previous results!

Proprietà Calcolate con Dipendenze

Le proprietà calcolate sono eccezionali quando dipendono da più pezzi di dati. Guardiamo un esempio più complesso:

<template>
<div>
<input v-model="searchQuery" placeholder="Cerca todo">
<ul>
<li v-for="todo in filteredTodos" :key="todo.id">{{ todo.text }}</li>
</ul>
</div>
</template>

<script>
export default {
data() {
return {
searchQuery: '',
todos: [
{ id: 1, text: 'Impara Vue', completed: false },
{ id: 2, text: 'Crea un\'app', completed: true },
{ id: 3, text: 'Padroneggia le proprietà calcolate', completed: false }
]
}
},
computed: {
filteredTodos() {
return this.todos.filter(todo =>
todo.text.toLowerCase().includes(this.searchQuery.toLowerCase())
)
}
}
}
</script>

Qui, filteredTodos è come un filtro intelligente. Osserva sia todos che searchQuery. Quando uno dei due cambia, aggiorna la lista automaticamente. Magia, vero?

Get/Set nelle Proprietà Calcolate

Ora, diamo un upgrade! Le proprietà calcolate possono avere sia un getter che un setter. È come avere una ricetta a due vie - puoi leggere il risultato e modificare gli ingredienti!

<template>
<div>
<p>Nome Completo: {{ fullName }}</p>
<button @click="changeFullName">Cambia Nome</button>
</div>
</template>

<script>
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe'
}
},
computed: {
fullName: {
get() {
return this.firstName + ' ' + this.lastName
},
set(newValue) {
const names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
},
methods: {
changeFullName() {
this.fullName = 'Jane Smith'
}
}
}
</script>

In questo esempio, fullName non è solo una ricetta (getter) ma anche una ricetta inversa (setter). Quando cambiamo fullName, aggiorna automaticamente firstName e lastName. È come avere una pozione magica per cambiare il nome!

Metodi nelle Proprietà Calcolate

Concludiamo con una tabella dei metodi comuni che puoi usare nelle proprietà calcolate:

Metodo Descrizione Esempio
filter() Crea un nuovo array con elementi che passano un test this.items.filter(item => item.price > 100)
map() Crea un nuovo array trasformando ogni elemento this.items.map(item => item.name.toUpperCase())
reduce() Riduce un array a un singolo valore this.items.reduce((total, item) => total + item.price, 0)
sort() Ordina gli elementi di un array this.items.sort((a, b) => a.price - b.price)
includes() Controlla se un array contiene un certo elemento this.items.includes('apple')
find() Restituisce il primo elemento che passa un test this.items.find(item => item.id === 3)

Ricorda, questi metodi non modificano l'array originale, che è perfetto per le proprietà calcolate!

Eccoci qui, miei apprendisti entusiasti! Hai appena padroneggiato l'arte delle proprietà calcolate in Vue.js. Dalla semplici calcoli alle complesse filtrazioni, ora hai il potere di rendere le tue applicazioni Vue più intelligenti ed efficienti. Continua a praticare, continua a programmare e, soprattutto, divertiti con Vue!

Credits: Image by storyset