useTrail i useChain do sekwencji
Kaskadować animacje wielu elementów za pomocą useTrail i sterować sekwencjami za pomocą useChain
useTrail i useChain do sekwencji to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 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.
useTrail do animacji kaskadowych
useTrail(count, config) tworzy count sprężyn, które są animowane kolejno, z konfigurowalnym opóźnieniem między nimi. Gdy rozpoczyna się trail, pierwszy element jest animowany od razu, drugi zaczyna chwilę później, trzeci jeszcze później i tak dalej — tworząc efekt wachlarza lub kaskady.
Wartość zwracana przez useTrail
useTrail zwraca tablicę obiektów sprężyn, po jednym dla każdego elementu trail. Każda sprężyna ma taki sam kształt (te same klucze), ale rozpoczyna animację z innym przesunięciem czasowym. Podczas renderowania należy jednocześnie iterować po tablicy trail i tablicy elementów, aby każdy animowany element otrzymał odpowiadającą mu sprężynę.
Zastosowanie useTrail do listy
Listę z efektem trail można renderować, iterując po tablicy trail: trail.map((spring, i) => React.createElement(animated.div, { style: spring, key: items[i].id }, items[i].content)). Każdy animated.div otrzymuje własny obiekt sprężyny, dzięki czemu elementy są animowane kolejno. Sprężyny są uruchamiane w kolejności indeksów: 0, 1, 2, 3...
Sterowanie kierunkiem animacji useTrail
useTrail obsługuje wzorzec przełączania między animacją do przodu i do tyłu. Należy przekazać stan logiczny open, aby sterować kierunkiem: gdy open ma wartość true, trail przechodzi od ukrycia do widoczności, a gdy ma wartość false — od widoczności do ukrycia. Kolejność trail jest automatycznie odwracana, więc elementy znikają w odwrotnej kolejności (ostatni wchodzi, pierwszy wychodzi).
Konfiguracja i synchronizacja trail
Obiekt konfiguracji useTrail jest taki sam jak w useSpring: tension, friction, mass. Opóźnienie między elementami zależy od czasu potrzebnego każdej sprężynie na rozpoczęcie działania, który jest określany przez ogólną fizykę sprężyny. Sztywniejsze sprężyny z większą wartością tension tworzą szybsze stopniowanie, a delikatniejsze sprężyny tworzą dłuższe kaskady.
useSpringRef dla useChain
useSpringRef() tworzy referencję, którą należy dołączyć do hooka sprężyny za pomocą jego opcji ref. Referencja umożliwia useChain sterowanie momentem rozpoczęcia działania sprężyny. Należy utworzyć po jednej referencji dla każdej sprężyny lub animacji trail, które mają być sekwencjonowane: const springRef = useSpringRef(), a następnie ją przekazać: useSpring({ ref: springRef, ... }).
useChain do sekwencyjnego sterowania
useChain([ref1, ref2, ref3], [0, 0.5, 0.8]) porządkuje sekwencję wielu sprężyn lub animacji trail. Pierwszym argumentem jest tablica springRefów w kolejności, w jakiej mają być odtwarzane. Drugim argumentem jest tablica znaczników czasu z zakresu od 0 do 1, określających moment rozpoczęcia każdej sprężyny jako ułamek całkowitego przedziału czasowego.
Znaczenie znaczników czasu w useChain
W useChain znaczniki czasu takie jak [0, 0.5] oznaczają, że sprężyna 1 rozpoczyna działanie na początku sekwencji, czyli przy 0%, a sprężyna 2 przy 50%. Opcjonalny trzeci argument określa całkowity czas trwania w milisekundach (domyślnie 1000 ms). Zatem przy wartościach [0, 0.5] i czasie 2000 ms sprężyna 1 rozpoczyna działanie po 0 ms, a sprężyna 2 po 1000 ms.
Praktyczny przykład useChain
Często stosowany wzorzec polega na animowaniu rozwijania kontenera (useSpring sterujący rozmiarem), a następnie pojawiania się elementów wewnątrz (useTrail dla listy). Należy dołączyć referencje do obu animacji, a następnie użyć useChain([sizeRef, trailRef], [0, 0.5]), aby najpierw rozwinąć kontener, a następnie rozpocząć pojawianie się elementów w połowie sekwencji. Tworzy to efektowną, dwufazową animację wejścia.
Schematy przejść między stronami
useChain doskonale nadaje się do przejść między stronami. Podczas nawigowania między stronami należy połączyć animację wyjścia starej strony z animacją wejścia nowej. Najpierw kończy się animacja wyjścia (znacznik czasu 0), a następnie rozpoczyna się animacja wejścia (znacznik czasu 0.6). Tworzy to płynne przekazanie zamiast nagłego przełączenia.
Efekt paralaksy z useTrail
useTrail może tworzyć efekty przewijania z paralaksą, animując elementy z różnymi prędkościami zależnie od ich pozycji w trail. Elementy znajdujące się dalej w trail rozpoczynają animację później i mogą mieć inną konfigurację (niższe tension), przez co poruszają się wolniej. Takie oparte na głębi różnice w czasie symulują efekt paralaksy obiektów znajdujących się w różnych odległościach.
Mechanizm stopniowania w useTrail
W jaki sposób useTrail tworzy stopniowane opóźnienie między elementami animacji?
Podsumowanie lekcji: useTrail i useChain
useTrail(count, config) tworzy count sprężyn, które są animowane kolejno, tworząc stopniowane pojawianie się elementów listy. Aby renderować elementy, należy jednocześnie iterować po trail i tablicy elementów. useSpringRef() tworzy referencje, których useChain używa do ustalania kolejności. useChain([ref1, ref2], [0, 0.5]) steruje sekwencją wielu sprężyn za pomocą ułamkowych znaczników czasu. Razem mechanizmy te umożliwiają tworzenie złożonych, wielofazowych sekwencji, takich jak animacje „rozwiń, a następnie pokaż”.
Często zadawane pytania
Czy lekcja „useTrail i useChain do sekwencji” jest bezpłatna?
Tak — pełny tekst „useTrail i useChain do sekwencji” 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 „useTrail i useChain do sekwencji”?
Kaskadować animacje wielu elementów za pomocą useTrail i sterować sekwencjami za pomocą useChain Ć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 3 z 4.
Ile czasu zajmuje lekcja „useTrail i useChain do sekwencji”?
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
- Podstawy React Spring: hook useSpring
- Animowane komponenty i interpolacja stylów
- useTrail i useChain do sekwencji
- Animacje sterowane gestami z use-gesture