Middle
Mi az a 'watch' és a 'computed' a Vue.js-ben, és hogyan működnek?
sobes.tech MI
Válasz az MI-től
watch (figyelők)
- Egy adott reaktív tulajdonság változására reakciót alkalmaz.
- Lehetővé teszi aszinkron műveletek végrehajtását, a végrehajtás késleltetését vagy összetettebb számításokat, amikor a tulajdonság értéke megváltozik.
- A komponensen belül az
watchopcióval konfigurálható. - Lehet paramétere
handler(kezelőfüggvény),deep(mély megfigyelés beágyazott objektumokra/ tömbökre) ésimmediate(a kezelőfüggvény azonnali futtatása a komponens létrehozásakor).
Példa:
watch: {
// Figyeli a `firstName` tulajdonság változását
firstName(newValue, oldValue) {
console.log(`A név ${oldValue} -ról ${newValue} -re változott`);
},
// Mély megfigyelés az `userInfo` objektumon
userInfo: {
handler(newValue, oldValue) {
console.log('A felhasználói információk megváltoztak.');
},
deep: true
}
}
computed (számított tulajdonságok)
- Olyan deklaratív módon létrehozott függő reaktív adatok esetén használható.
- Az eredmény gyorsítótárazva van mindaddig, amíg a függőségek nem változnak.
- Lazán számítódik, csak akkor, amikor hozzáférnek.
- A komponensen belül az
computedopcióval konfigurálható. - Vissza kell adnia egy értéket.
Példa:
computed: {
// A teljes nevet a `firstName` és `lastName` alapján számítja ki
fullName() {
return `${this.firstName} ${this.lastName}`;
},
// Szűri a felhasználók listáját
filteredUsers() {
return this.users.filter(user => user.isActive);
}
}
Fő különbségek
| Jellemző | watch | computed |
|---|---|---|
| Cél | Egy tulajdonság változására reagálni | Függő adatok számítása |
| Gyorsítótár | Nem | Igen (függőségek szerint) |
| Lazán számítódik | Nem | Igen |
| Visszatérési érték | Nem (mellékhatásokat hajt végre) | Igen (számított értéket ad vissza) |
| Aszinkron | Igen | Nem |
| Szintaxis | Objektum handler függvényekkel | Objektum függvényekkel, amelyek értékeket adnak vissza |
Használja a computed-et reaktív adatok szerzése érdekében, amelyek más adatokból származnak. A watch-ot használja mellékhatások végrehajtására (pl. API hívások, DOM módosítások), amikor egy reaktív tulajdonság értéke megváltozik, vagy összetettebb logikai reakciók végrehajtására.