Junior
Για ποιο λόγο δηλώνεται ένας πίνακας εξαρτήσεων στο React;
sobes.tech AI
Απάντηση από AI
Ο πίνακας εξαρτήσεων (dependency array) στα hooks του React (π.χ., useEffect, useMemo, useCallback) δείχνει ποιες τιμές εξαρτώνται από την εκτέλεση του effect ή της αποθηκευμένης λειτουργίας.
Η χρήση του επιτρέπει:
- Βελτιστοποίηση της απόδοσης: Το React επανεκτελεί το effect ή επαναϋπολογίζει την τιμή μόνο όταν μια από τις τιμές στον πίνακα εξαρτήσεων έχει αλλάξει από την τελευταία απόδοση. Αυτό αποτρέπει περιττούς υπολογισμούς και ενημερώσεις.
- Αποφυγή ατέρμονων κύκλων: Χωρίς πίνακα εξαρτήσεων ή με λανθασμένα ορισμένες εξαρτήσεις, το effect μπορεί να εκτελείται σε κάθε απόδοση, προκαλώντας ενημέρωση κατάστασης που με τη σειρά της προκαλεί νέα απόδοση, δημιουργώντας έναν ατέρμονα κύκλο. Ο καθορισμός των εξαρτήσεων διασφαλίζει ότι το effect τρέχει μόνο όταν είναι πραγματικά απαραίτητο.
- Έλεγχος του κύκλου ζωής του effect:
- Ένας κενός πίνακας
[]σημαίνει ότι το effect θα τρέξει μόνο μία φορά μετά την πρώτη απόδοση (παρόμοιο με τοcomponentDidMount). Δεν θα τρέξει ξανά σε επόμενες αποδόσεις, ακόμα και αν αλλάξουν η κατάσταση ή τα props του component. - Η απουσία πίνακα εξαρτήσεων (ή
undefined) σημαίνει ότι το effect θα τρέχει σε κάθε απόδοση του component.
- Ένας κενός πίνακας
Παράδειγμα με useEffect:
// Το effect τρέχει μόνο μία φορά μετά την πρώτη απόδοση
useEffect(() => {
console.log('Το component έχει τοποθετηθεί');
}, []);
// Το effect τρέχει στην πρώτη απόδοση και όταν αλλάζει η τιμή του count
useEffect(() => {
console.log('Η τιμή του count άλλαξε:', count);
}, [count]);
// Το effect τρέχει σε κάθε απόδοση
useEffect(() => {
console.log('Έγινε απόδοση');
});
Παράδειγμα με useMemo:
// Η τιμή `expensiveResult` επαναϋπολογίζεται μόνο όταν αλλάζουν τα a ή b
const expensiveResult = useMemo(() => {
console.log('Επαναϋπολογισμός...');
return a * b;
}, [a, b]);
Παράδειγμα με useCallback:
// Η συνάρτηση handleClick δημιουργείται ξανά μόνο όταν αλλάζει το id
const handleClick = useCallback(() => {
console.log('Έγινε κλικ στο στοιχείο με id:', id);
}, [id]);
Ο σωστός ορισμός του πίνακα εξαρτήσεων είναι κρίσιμος για τη σωστή λειτουργία των hooks και την απόδοση των React εφαρμογών.