Middle
Τι είναι το 'watch' και το 'computed' στο Vue.js, και πώς λειτουργούν;
sobes.tech AI
Απάντηση από AI
watch (παρατηρητές)
- Χρησιμοποιείται για να αντιδράσει σε αλλαγές σε μια συγκεκριμένη αντιδραστική ιδιότητα.
- Επιτρέπει την εκτέλεση ασύγχρονων λειτουργιών, την καθυστέρηση της εκτέλεσης ή την εκτέλεση πολύπλοκων υπολογισμών όταν αλλάζει η τιμή της ιδιότητας.
- Ρυθμίζεται με την επιλογή
watchμέσα στο συστατικό. - Μπορεί να έχει παραμέτρους όπως
handler(λειτουργία χειριστή),deep(βαθιά παρατήρηση των εσωτερικών αντικειμένων/απείρων) καιimmediate(εκτέλεση του χειριστή κατά τη δημιουργία του συστατικού).
Παράδειγμα:
watch: {
// Παρακολουθεί την αλλαγή της ιδιότητας `firstName`
firstName(newValue, oldValue) {
console.log(`Το όνομα άλλαξε από ${oldValue} σε ${newValue}`);
},
// Βαθιά παρακολουθεί το αντικείμενο `userInfo`
userInfo: {
handler(newValue, oldValue) {
console.log('Οι πληροφορίες χρήστη έχουν αλλάξει.');
},
deep: true
}
}
computed (υπολογιζόμενα χαρακτηριστικά)
- Χρησιμοποιείται για να δημιουργήσει δηλωτικά εξαρτώμενα αντιδραστικά δεδομένα.
- Το αποτέλεσμα αποθηκεύεται στην cache μέχρι να αλλάξουν οι εξαρτώμενες αντιδραστικές εξαρτήσεις.
- Υπολογίζεται τεμπέλικα, μόνο όταν ζητηθεί.
- Ρυθμίζεται με την επιλογή
computedμέσα στο συστατικό. - Πρέπει να επιστρέφει μια τιμή.
Παράδειγμα:
computed: {
// Υπολογίζει το πλήρες όνομα με βάση το firstName και το lastName
fullName() {
return `${this.firstName} ${this.lastName}`;
},
// Φιλτράρει τη λίστα χρηστών
filteredUsers() {
return this.users.filter(user => user.isActive);
}
}
Βασικές διαφορές
| Χαρακτηριστικό | watch | computed |
|---|---|---|
| Σκοπός | Να αντιδράσει στην αλλαγή μιας ιδιότητας | Να υπολογίζει εξαρτώμενα δεδομένα |
| Cache | Όχι | Ναι (ανάλογα με τις εξαρτήσεις) |
| Τεμπέλικο | Όχι | Ναι |
| Τιμή επιστροφής | Όχι (εκτελεί παρενέργειες) | Ναι (επιστρέφει τον υπολογισμένο) |
| Ασύγχρονο | Ναι | Όχι |
| Σύνταξη | Αντικείμενο με λειτουργίες χειριστές | Αντικείμενο με λειτουργίες που επιστρέφουν τιμές |
Χρησιμοποιήστε το computed για να λαμβάνετε αντιδραστικά δεδομένα που προκύπτουν από άλλα δεδομένα. Χρησιμοποιήστε το watch για την εκτέλεση παρενεργειών (π.χ. κλήσεις API, αλλαγές στο DOM) όταν αλλάζει η τιμή μιας αντιδραστικής ιδιότητας, ή για την εκτέλεση πιο σύνθετων αντιδράσεων.