Middle
Mis on 'watch' ja 'computed' Vue.js-s ning kuidas nad töötavad?
sobes.tech AI
Vastus AI-lt
watch (vaatlejad)
- Kasutatakse reaktiivse omaduse muutustele reageerimiseks.
- Võimaldab teha asünkroonseid operatsioone, viivitada täitmist või teha keerukaid arvutusi, kui omaduse väärtus muutub.
- Konfigureeritakse komponendi sees
watchvalikuga. - Võib omada parameetreid
handler(funktsioon-töötleja),deep(sügav jälgimine sisemiste objektide/maatriksite jaoks) jaimmediate(töötleja käivitamine komponendi loomisel).
Näide:
watch: {
// Jälgib `firstName` omaduse muutust
firstName(newValue, oldValue) {
console.log(`Nimi muutus ${oldValue}lt ${newValue}le`);
},
// Sügav jälgimine `userInfo` objektile
userInfo: {
handler(newValue, oldValue) {
console.log('Kasutaja teave muutus.');
},
deep: true
}
}
arvutatud omadused (computed)
- Kasutatakse sõnalise sõltuvuse loomise jaoks.
- Tulemus salvestatakse vahemällu kuni sõltuvused muutuvad.
- Arvutatakse hoolikalt, ainult kui sellele viidatakse.
- Konfigureeritakse
computedvalikuga. - Peab tagastama väärtuse.
Näide:
computed: {
// Arvutab täisnime `firstName` ja `lastName` põhjal
fullName() {
return `${this.firstName} ${this.lastName}`;
},
// Filtreerib kasutajate nimekirja
filteredUsers() {
return this.users.filter(user => user.isActive);
}
}
Peamised erinevused
| Omadus | watch | computed |
|---|---|---|
| Eesmärk | Reageerida omaduse muutusele | Arvutada sõltuvad andmed |
| Välimus | Ei | Jah (sõltuvuste järgi) |
| Hooldus | Ei | Jah |
| Tagastatav väärtus | Ei (teeb kõrvaltoimeid) | Jah (tagastab arvutatud väärtuse) |
| Asünkroonsus | Jah | Ei |
| Süntaks | Objekt funktsioonidega- töötlejad | Objekt funktsioonidega, mis tagastavad väärtuse |
Kasutage computed, et saada reaktiivseid andmeid, mis on teistest andmetest tuletatud. Kasutage watch, et teha kõrvaltoimeid (näiteks API kutsed, DOM-i muudatused), kui reaktiivse omaduse väärtus muutub, või et teha keerukamaid loogilisi reaktsioone.