Sobes.tech
Middle

Δώστε παραδείγματα για το τι μπορεί να κάνει κανείς με το hook useEffect, εκτός από την εκτέλεση αιτημάτων στον διακομιστή.

sobes.tech AI

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

  • Διαχείριση της κατάστασης του τίτλου της σελίδας (document.title).

  • Εγγραφή και διαγραφή από γεγονότα του περιηγητή (π.χ., αλλαγή μεγέθους παραθύρου, κλικ εκτός στοιχείου):

    useEffect(() => {
      const handleResize = () => {
        console.log('Το μέγεθος του παραθύρου άλλαξε');
      };
      window.addEventListener('resize', handleResize);
    
      return () => {
        window.removeEventListener('resize', handleResize);
      };
    }, []); // Άδειος πίνακας εξαρτήσεων: το effect εκτελείται μία φορά κατά την εγκατάσταση και καθαρίζεται κατά την αποσυναρμολόγηση.
    
  • Εργασία με τοπική αποθήκευση (ανάγνωση/εγγραφή δεδομένων):

    useEffect(() => {
      const savedValue = localStorage.getItem('myInputValue');
      if (savedValue) {
        setInputValue(savedValue); // Υπάρχει κατάσταση inputValue και λειτουργία setInputValue
      }
    }, []); // Φόρτωση τιμής κατά την εγκατάσταση.
    
    useEffect(() => {
      localStorage.setItem('myInputValue', inputValue); // Αποθήκευση κατά την αλλαγή του inputValue.
    }, [inputValue]); // Εξάρτηση από inputValue.
    
  • Αρχικοποίηση βιβλιοθηκών ή συστατικών τρίτων.

  • Ρύθμιση και καθαρισμός χρονόμετρων (setTimeout, setInterval):

    useEffect(() => {
      const timerId = setInterval(() => {
        console.log('Ο χρονόμετρος λειτουργεί');
      }, 1000);
    
      return () => {
        clearInterval(timerId); // Καθαρισμός διαστήματος κατά την αποσυναρμολόγηση.
      };
    }, []);
    
  • Παρακολούθηση αλλαγών σε props ή κατάσταση και εκτέλεση ενεργειών ως απάντηση.

  • Εστίαση σε στοιχείο κατά την εγκατάσταση του συστατικού:

    useEffect(() => {
      inputRef.current.focus(); // Υπάρχει αναφορά inputRef
    }, []);