0Pricing
React Academy · Lekcja

Działanie StrictMode

Poznaj podwójne wywołania i ostrzeżenia o przestarzałych API w środowisku deweloperskim

Działanie StrictMode to bezpłatna lekcja React Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W tej lekcji dowiedzą się Państwo, jak React.StrictMode działa podczas tworzenia aplikacji, jakie ostrzeżenia wyświetla oraz jak pomaga pisać bezpieczniejszy kod React.

Czym jest StrictMode?

StrictMode to specjalny komponent React, który opakowuje część drzewa i włącza dodatkowe kontrole **wyłącznie w środowisku deweloperskim**. Nie ma żadnego wpływu na wersję produkcyjną.
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>
);

Podwójne wywołanie metod cyklu życia

W trybie Strict Mode React celowo wywołuje funkcję komponentu i niektóre metody cyklu życia **dwukrotnie** podczas tworzenia aplikacji. Ma to ujawnić efekty uboczne, które nie są prawidłowo czyszczone.

Dlaczego podwójne wywołanie?

React 18+ może w przyszłości ponownie montować komponenty, na przykład na potrzeby fast-refresh i interfejsu API Offscreen. Podwójne wywołanie podczas tworzenia aplikacji symuluje takie zachowanie, dzięki czemu można wykryć błędy, takie jak narastające subskrypcje lub mutacje DOM wykonywane dwukrotnie.

Montowanie–odmontowanie–ponowne montowanie efektu

W React 18 z włączonym StrictMode każdy useEffect jest wykonywany, czyszczony, a następnie wykonywany ponownie podczas początkowego montowania. Jeśli funkcja czyszcząca jest prawidłowa, podwójne wykonanie nie powoduje problemów. Jeśli aplikacja przestaje działać poprawnie, funkcja czyszcząca jest brakująca lub nieprawidłowa.
useEffect(() => {
  const id = setInterval(() => setTick(t => t + 1), 1000);
  return () => clearInterval(id); // cleanup required!
}, []);

Wykrywanie przestarzałych interfejsów API

StrictMode ostrzega, gdy kod korzysta z przestarzałych interfejsów API React, takich jak `componentWillMount`, `componentWillReceiveProps` i refy w postaci łańcuchów. Ostrzeżenia te pojawiają się w konsoli przeglądarki jako żółte komunikaty.

Ostrzeżenie dotyczące starszego Context API

Jeśli biblioteka zewnętrzna korzysta ze starszego Context API (`childContextTypes` / `getChildContext`), StrictMode wyświetli ostrzeżenie. Oznacza to, że bibliotekę należy zaktualizować do współczesnego interfejsu API `React.createContext`.

Można bezpiecznie włączyć w istniejących aplikacjach

Można opakować tylko część drzewa komponentów w StrictMode, aby stopniowo włączyć go w istniejącej aplikacji. Należy zacząć od nowych sekcji i rozszerzać zakres w miarę naprawiania ostrzeżeń.
function App() {
  return (
    <>
      <LegacyPart />  {/* not wrapped */}
      <StrictMode>
        <NewFeature />
      </StrictMode>
    </>
  );
}

Brak różnic wizualnych

StrictMode nie renderuje żadnego widocznego interfejsu. Jest wyłącznie narzędziem deweloperskim. W DOM nie pojawią się żadne dodatkowe elementy — widoczne będą tylko dodatkowe ostrzeżenia w konsoli oraz podwójne wywoływanie.

Włączanie od pierwszego dnia

Najlepiej włączyć StrictMode od samego początku projektu. Wczesne naprawienie problemów związanych z podwójnym wywołaniem jest znacznie tańsze niż odkrycie ich później, gdy baza kodu będzie duża.

Szybkie sprawdzenie

Jaki jest cel podwójnego wywoływania funkcji komponentów przez React StrictMode?

Podsumowanie

StrictMode to niewpływające na wersję produkcyjną narzędzie deweloperskie, które podwójnie wywołuje renderowania i efekty, aby wykrywać nieczysty kod, ostrzega o przestarzałych interfejsach API oraz przygotowuje aplikację na przyszłe funkcje React.

Następna lekcja

Następna lekcja: **Czyste komponenty i unikanie efektów ubocznych podczas renderowania** — dowiedzą się Państwo, jak pisać funkcje renderujące wolne od mutacji i odczytów zewnętrznych.

Często zadawane pytania

Czy lekcja „Działanie StrictMode” jest bezpłatna?

Tak — pełny tekst „Działanie StrictMode” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Działanie StrictMode”?

Poznaj podwójne wywołania i ostrzeżenia o przestarzałych API w środowisku deweloperskim Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Działanie StrictMode”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Działanie StrictMode
  2. Czyste komponenty i unikanie efektów ubocznych podczas renderowania
  3. Dobre praktyki dotyczące key i ref
  4. Struktura folderów i konwencje nazewnictwa
← Powrót do React Academy