Le basi della Reattività
Preferenza dull'API
Questa pagina e molti altri capitoli più avanti nella guida contengono contenuti diversi per l'Options API e la Composition API. La tua preferenza attuale è Composition API. Puoi alternare tra gli stili delle API utilizzando gli interruttori "Preferenza API" nella parte superiore della barra laterale sinistra.
Dichiarare lo Stato Reattivo
ref()
Nella Composition API, il modo consigliato per dichiarare lo stato reattivo è utilizzare la funzione ref()
:
js
import { ref } from 'vue'
const count = ref(0)
ref()
prende l'argomento e lo restituisce racchiuso in un oggetto ref con una proprietà .value
:
js
const count = ref(0)
console.log(count) // { value: 0 }
console.log(count.value) // 0
count.value++
console.log(count.value) // 1
Vedi anche: Typing Refs
Per accedere alle ref nel template di un componente, bisogna dichiararle e restituirle tramite la funzione setup()
del componente stesso:
js
import { ref } from 'vue'
export default {
// `setup` è un hook speciale dedicato alla Composition API.
setup() {
const count = ref(0)
// espone la ref per il template
return {
count
}
}
}
template
<div>{{ count }}</div>
Da notare che non abbiamo avuto bisogno di aggiungere .value
quando abbiamo utilizzato la ref nel template. Per comodità, le ref vengono automaticamente estratte quando utilizzate all'interno dei template (con alcune limitazioni).
Puoi anche modificare direttamente una ref nei gestori di eventi (event handlers):
template
<button @click="count++">
{{ count }}
</button>
Per una logica più complessa, possiamo dichiarare funzioni che modificano le ref nello stesso scope ed esporle come metodi insieme allo stato:
js
import { ref } from 'vue'
export default {
setup() {
const count = ref(0)
function increment() {
// .value è necessario in JavaScript
count.value++
}
// non dimenticare di esporre anche la funzione.
return {
count,
increment
}
}
}
I metodi esposti possono quindi essere utilizzati come gestori di eventi (event handlers):
template
<button @click="increment">
{{ count }}
</button>
Ecco l'esempio dal vivo su Codepen, senza utilizzare alcuno strumento di compilazione.