Sobes.tech
Middle

Podaj przykłady tego, co można zrobić za pomocą hooka useEffect, oprócz wykonywania zapytań do serwera.

sobes.tech AI

Odpowiedź od AI

  • Zarządzanie stanem tytułu strony (document.title).

  • Subskrypcja i odsubskrypcja od zdarzeń przeglądarki (np. zmiana rozmiaru okna, kliknięcia poza elementem):

    useEffect(() => {
      const handleResize = () => {
        console.log('Rozmiar okna się zmienił');
      };
      window.addEventListener('resize', handleResize);
    
      return () => {
        window.removeEventListener('resize', handleResize);
      };
    }, []); // Pusta tablica zależności: efekt wykonuje się raz podczas montowania i jest czyszczony podczas odmontowania.
    
  • Praca z lokalnym magazynem (czytanie/zapisywanie danych):

    useEffect(() => {
      const savedValue = localStorage.getItem('myInputValue');
      if (savedValue) {
        setInputValue(savedValue); // Zakłada się, że istnieje stan inputValue i funkcja setInputValue
      }
    }, []); // Wczytanie wartości podczas montowania.
    
    useEffect(() => {
      localStorage.setItem('myInputValue', inputValue); // Zapis podczas zmiany inputValue.
    }, [inputValue]); // Zależność od inputValue.
    
  • Inicjalizacja bibliotek lub komponentów zewnętrznych.

  • Konfiguracja i czyszczenie timerów (setTimeout, setInterval):

    useEffect(() => {
      const timerId = setInterval(() => {
        console.log('Timer działa');
      }, 1000);
    
      return () => {
        clearInterval(timerId); // Czyszczenie interwału podczas odmontowania.
      };
    }, []);
    
  • Śledzenie zmian propsów lub stanu i wykonywanie działań w odpowiedzi.

  • Ustawianie fokusu na element podczas montowania komponentu:

    useEffect(() => {
      inputRef.current.focus(); // Zakłada się, że istnieje ref inputRef
    }, []);