Middle
Ce sunt 'watch' și 'computed' în Vue.js și cum funcționează?
sobes.tech AI
Răspuns de la AI
watch (observatori)
- Se utilizează pentru a reacționa la modificări ale unei proprietăți reactive specifice.
- Permite efectuarea de operații asincrone, întârzierea execuției sau efectuarea de calcule complexe atunci când valoarea proprietății se schimbă.
- Se configurează cu opțiunea
watchîn interiorul componentei. - Poate avea parametri precum
handler(funcție handler),deep(observare profundă a obiectelor/array-urilor imbricate) șiimmediate(executarea handler-ului la crearea componentei).
Exemplu:
watch: {
// Observă schimbările în proprietatea `firstName`
firstName(newValue, oldValue) {
console.log(`Numele s-a schimbat de la ${oldValue} la ${newValue}`);
},
// Observă în profunzime obiectul `userInfo`
userInfo: {
handler(newValue, oldValue) {
console.log('Informațiile despre utilizator au fost modificate.');
},
deep: true
}
}
computed (proprietăți calculate)
- Se utilizează pentru a crea date reactive dependente într-un mod declarativ.
- Rezultatul este stocat în cache până când dependențele sale reactive se schimbă.
- Se calculează lazily, doar atunci când este accesat.
- Se configurează cu opțiunea
computedîn interiorul componentei. - Trebuie să returneze o valoare.
Exemplu:
computed: {
// Calculează numele complet pe baza lui firstName și lastName
fullName() {
return `${this.firstName} ${this.lastName}`;
},
// Filtrează lista de utilizatori
filteredUsers() {
return this.users.filter(user => user.isActive);
}
}
Diferențe principale
| Caracteristică | watch | computed |
|---|---|---|
| Scop | Reacționează la schimbarea unei proprietăți | Calculează date dependente |
| Caching | Nu | Da (în funcție de dependențe) |
| Lazy | Nu | Da |
| Valoare returnată | Nu (execută efecte secundare) | Da (returnează valoarea calculată) |
| Asincron | Da | Nu |
| Sintaxă | Obiect cu funcții handler | Obiect cu funcții care returnează valori |
Utilizați computed pentru a obține date reactive derivate din alte date. Utilizați watch pentru a executa efecte secundare (de exemplu, apeluri API, modificări DOM) atunci când valoarea proprietății reactive se schimbă, sau pentru a realiza reacții mai complexe.