Przejścia CSS przy zmianach stanu React
Proszę uruchamiać przejścia CSS przez przełączanie nazw klas za pomocą stanu React — przejścia opacity, transform i color.
Przejścia CSS przy zmianach stanu React 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.
Czym jest przejście CSS
CSS-owe transition płynnie interpoluje właściwość między dwiema wartościami w czasie, zamiast zmieniać ją natychmiast. Deklaruje się je na elemencie za pomocą transition: property duration timing-function delay.
W React zazwyczaj nie animuje się ręcznie wartości inline. Zamiast tego za pomocą stanu przełącza się klasę lub styl, a CSS obsługuje klatki pośrednie.
Uruchamianie przejścia przez przełączanie klasy
Typowy wzorzec polega na przechowywaniu wartości logicznej w useState i zamianie klasy CSS po jej zmianie. Gdy klasa się zmienia, docelowa właściwość otrzymuje nową wartość, a CSS animuje różnicę.
Na przykład isOpen określa, czy element ma klasę open, a klasa open ustawia inną wysokość lub transformację.
Stan logiczny isVisible
Typowa konfiguracja to const [isVisible, setIsVisible] = useState(false). Przycisk wywołuje setIsVisible(v => !v), aby przełączyć wartość.
Użycie aktualizatora funkcyjnego v => !v zapobiega odczytaniu nieaktualnego stanu, gdy kilka aktualizacji zostanie dodanych do kolejki, dzięki czemu przełączanie działa niezawodnie.
Warunkowa klasa z użyciem literałów szablonowych
Klasę className buduje się dynamicznie: className={'panel ' + (isVisible ? 'panel--shown' : 'panel--hidden')}. Klasa bazowa zawiera deklarację przejścia, a klasy modyfikatorów przechowują wartości początkowe i końcowe.
Umieszczenie transition w zawsze obecnej klasie bazowej sprawia, że animacja działa w obu kierunkach — podczas otwierania i zamykania.
Jednoczesne animowanie transform i opacity
Można animować kilka właściwości naraz, wymieniając je po przecinku: transition: transform 300ms ease, opacity 300ms ease. Efekt płynnego pojawiania się i przesuwania łączy zmianę opacity z użyciem translateY we właściwości transform.
Jednoczesne animowanie obu właściwości zapewnia dopracowane pojawianie się elementu, który przesuwa się w górę i równocześnie staje się widoczny.
Efekt kaskadowy z transition-delay
transition-delay opóźnia rozpoczęcie przejścia. Nadanie elementom listy coraz większych opóźnień tworzy kaskadę, w której każdy element animuje się chwilę po poprzednim.
W React opóźnienie można obliczyć inline, na przykład style={{ transitionDelay: index * 50 + 'ms' }}.
Dlaczego display nie może być animowane
Właściwość display nie jest animowalna, ponieważ między wartościami none i block nie ma wartości pośrednich. Przejście tej właściwości powoduje natychmiastową zmianę, a nie płynne pojawianie się.
Zamiast tego należy animować opacity, aby uzyskać efekt wizualnego zanikania, oraz przełączać pointer-events: none, aby ukryty element ignorował kliknięcia, gdy jest niewidoczny.
Funkcje czasowe
Funkcja czasowa określa, jak zmienia się prędkość w czasie trwania animacji. linear porusza się ze stałą prędkością, ease rozpoczyna się i kończy powoli, a cubic-bezier(...) pozwala zdefiniować całkowicie niestandardową krzywą.
Niestandardowe krzywe świetnie nadają się do uzyskania efektu dynamicznego lub sprężystego, na przykład cubic-bezier(0.34, 1.56, 0.64, 1) zapewnia niewielkie przekroczenie wartości docelowej.
Zmienne CSS do określania czasu trwania
Czasy trwania można przechowywać we własnych właściwościach CSS, takich jak --speed: 300ms, i używać ich ponownie: transition: opacity var(--speed) ease. Dzięki temu czas trwania pozostaje spójny we wszystkich komponentach.
React może nawet ustawiać tę zmienną inline za pomocą style={{ '--speed': '500ms' }}, pozwalając właściwościom komponentu sterować czasem trwania animacji.
Preferowanie transform i opacity ze względu na wydajność
Przeglądarki mogą animować transform i opacity w kompozytorze GPU bez ponownego obliczania układu ani ponownego malowania. Animowanie właściwości takich jak width, top czy margin wymusza obliczenia układu przy każdej klatce i może powodować zacinanie.
Gdy trzeba przesunąć, przeskalować lub obrócić element, należy użyć transform; gdy trzeba uzyskać efekt zanikania, należy użyć opacity.
Złożenie wszystkiego w całość
Niezawodne przejście w React łączy stan logiczny, warunkową klasę modyfikatora oraz klasę bazową, która deklaruje transition dla właściwości przyjaznych dla GPU. Stan przełącza klasę, a CSS zajmuje się animacją.
Dzięki temu komponenty zachowują deklaratywny charakter, a przeglądarka może tworzyć płynny ruch.
Szybki test
Sprawdź swoją wiedzę na temat wydajnych animacji.
Podsumowanie
Nauczono się uruchamiać przejścia CSS przez przełączanie klas sterowanych stanem, animować jednocześnie transform i opacity, tworzyć efekt kaskadowy za pomocą opóźnień oraz unikać animowania display przez użycie opacity wraz z pointer-events.
Omówiono także funkcje czasowe, czasy trwania przechowywane w zmiennych CSS oraz to, dlaczego właściwości kompozytowane przez GPU zapewniają płynny ruch.
Ucz się React dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 88
- Lekcje
- 324
Często zadawane pytania
Czy lekcja „Przejścia CSS przy zmianach stanu React” jest bezpłatna?
Tak — pełny tekst „Przejścia CSS przy zmianach stanu React” 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 „Przejścia CSS przy zmianach stanu React”?
Proszę uruchamiać przejścia CSS przez przełączanie nazw klas za pomocą stanu React — przejścia opacity, transform i color. Ć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 „Przejścia CSS przy zmianach stanu React”?
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
- Przejścia CSS przy zmianach stanu React
- Animacje CSS z użyciem keyframes w React
- useLayoutEffect do pomiarów przed animacją
- Animacje wejścia i wyjścia bez biblioteki