Sobes.tech
Junior

Για ποιο λόγο δηλώνεται ένας πίνακας εξαρτήσεων στο React;

sobes.tech AI

Απάντηση από AI

Ο πίνακας εξαρτήσεων (dependency array) στα hooks του React (π.χ., useEffect, useMemo, useCallback) δείχνει ποιες τιμές εξαρτώνται από την εκτέλεση του effect ή της αποθηκευμένης λειτουργίας.

Η χρήση του επιτρέπει:

  1. Βελτιστοποίηση της απόδοσης: Το React επανεκτελεί το effect ή επαναϋπολογίζει την τιμή μόνο όταν μια από τις τιμές στον πίνακα εξαρτήσεων έχει αλλάξει από την τελευταία απόδοση. Αυτό αποτρέπει περιττούς υπολογισμούς και ενημερώσεις.
  2. Αποφυγή ατέρμονων κύκλων: Χωρίς πίνακα εξαρτήσεων ή με λανθασμένα ορισμένες εξαρτήσεις, το effect μπορεί να εκτελείται σε κάθε απόδοση, προκαλώντας ενημέρωση κατάστασης που με τη σειρά της προκαλεί νέα απόδοση, δημιουργώντας έναν ατέρμονα κύκλο. Ο καθορισμός των εξαρτήσεων διασφαλίζει ότι το effect τρέχει μόνο όταν είναι πραγματικά απαραίτητο.
  3. Έλεγχος του κύκλου ζωής του 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 εφαρμογών.