Podstawy React Spring: hook useSpring
Animować wartości za pomocą useSpring, konfigurując napięcie, tarcie i masę dla naturalnie wyglądającego ruchu
Podstawy React Spring: hook useSpring 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.
Fizyka sprężyny a animacja oparta na czasie trwania
Tradycyjne animacje CSS korzystają ze stałego czasu trwania: animacja odtwarza się przez X milisekund, a następnie się zatrzymuje. react-spring animuje wartości z wykorzystaniem fizyki sprężyny — przebieg animacji zależy od tension (sztywności sprężyny) i friction (oporu sprężyny wobec ruchu). Zapewnia to naturalne wyhamowanie i bardziej organiczny charakter ruchu.
Podstawowe użycie useSpring
Hook useSpring({ from, to }) definiuje animowaną wartość. W from należy określić wartości początkowe, a w to wartości docelowe. useSpring zwraca obiekt springs, w którym każdy klucz jest wartością SpringValue — animowaną wersją odpowiadającej jej wartości liczbowej lub koloru.
Konfiguracja sprężyny: tension i friction
Opcja config steruje działaniem sprężyny. tension (domyślnie 170) określa sztywność — wyższe wartości powodują szybsze przyciąganie do celu. friction (domyślnie 26) określa tłumienie — niższe wartości powodują silniejsze odbijanie. mass (domyślnie 1) dodaje bezwładność. Te trzy wartości wspólnie określają charakter animacji.
Gotowe konfiguracje
react-spring zawiera gotowe konfiguracje, których można używać bez dostrajania: config.default jest zrównoważona i uniwersalna, config.gentle jest powolna i płynna, config.wobbly zapewnia odbijanie przy niskim tarciu, config.stiff jest szybka i dynamiczna, a config.slow działa bardzo stopniowo. Należy importować je z react-spring.
Obiekty SpringValue
Wartości zwracane przez useSpring to obiekty SpringValue, a nie zwykłe liczby. Nie można renderować ich bezpośrednio w JSX ani używać ich w zwykłych obiektach stylów. Należy je przekazywać do komponentów animated.*, które potrafią subskrybować aktualizacje sprężyny i wydajnie stosować je do DOM.
immediate: Pomijanie animacji
Przekazanie immediate: true do useSpring powoduje, że wartości natychmiast przeskakują do wartości docelowych, z pominięciem animacji sprężynowej. Jest to przydatne podczas pierwszego renderowania, gdy użytkownik włączył opcję „reduce motion” w ustawieniach systemu operacyjnego lub gdy trzeba programowo zresetować położenie bez żadnego ruchu widocznego na ekranie.
Odwracanie animacji sprężyny
Animację sprężyny można odwrócić, przełączając wartości znajdujące się w from i to. Często stosuje się wzorzec polegający na przechowywaniu logicznego stanu przełącznika i obliczaniu wartości from/to na jego podstawie: gdy przełącznik ma wartość false, animacja przebiega od 0 do 1, a gdy ma wartość true — od 1 do 0. react-spring płynnie przechodzi między tymi stanami.
Imperative API: api.start()
useSpring może zwrócić tablicę dwuelementową: const [springs, api] = useSpring(() => ({ from: { x: 0 } })). Obiekt api zapewnia programową kontrolę. Wywołanie api.start({ x: 100 }) rozpoczyna animację do nowej wartości, api.stop() zatrzymuje animację, a api.set({ x: 50 }) zmienia wartość natychmiast, bez animacji.
Kiedy używać podejścia deklaratywnego, a kiedy imperatywnego
Formy deklaratywnej useSpring({ from, to }) należy używać, gdy animacja zależy od stanu Reacta, który zmienia się w zwykły sposób. Formy imperatywnej z użyciem api.start() należy używać, gdy trzeba uruchamiać animacje z obsługi zdarzeń, gestów lub operacji asynchronicznych bez powodowania ponownego renderowania Reacta.
Wywołania zwrotne zdarzeń sprężyny
useSpring przyjmuje wywołania zwrotne cyklu życia w swojej konfiguracji. onStart jest wywoływane, gdy sprężyna rozpoczyna animację. onChange jest wywoływane przy każdej klatce i otrzymuje bieżącą wartość — jest przydatne do efektów ubocznych śledzących położenie. onRest jest wywoływane, gdy sprężyna osiąga stan spoczynku przy wartości końcowej, sygnalizując zakończenie animacji.
Ponowne uruchamianie animacji sprężynowych po zmianie stanu
W formie deklaratywnej useSpring automatycznie ponownie uruchamia animację, gdy przekazane do niego wartości ulegają zmianie. Na przykład useSpring({ opacity: isVisible ? 1 : 0 }) będzie animować przezroczystość za każdym razem, gdy zmieni się isVisible. Jest to najprostszy sposób powiązania animacji sprężynowych ze stanem komponentu.
Parametry fizyki sprężyny
Co kontrolują wartości tension i friction w konfiguracji react-spring?
Podsumowanie lekcji: podstawy useSpring
react-spring wykorzystuje fizykę do animowania: tension (sztywność), friction (tłumienie) i mass określają ruch. useSpring({ from, to }) zwraca obiekty SpringValue, które są przekazywane do komponentów animated.*. Gotowe konfiguracje (gentle, wobbly, stiff, slow) obejmują typowe przypadki. Imperative API [springs, api] umożliwia programową kontrolę za pomocą api.start(), api.stop() i api.set(). onRest jest wywoływane, gdy animacja osiąga stan spoczynku.
Często zadawane pytania
Czy lekcja „Podstawy React Spring: hook useSpring” jest bezpłatna?
Tak — pełny tekst „Podstawy React Spring: hook useSpring” 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 „Podstawy React Spring: hook useSpring”?
Animować wartości za pomocą useSpring, konfigurując napięcie, tarcie i masę dla naturalnie wyglądającego ruchu Ć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 „Podstawy React Spring: hook useSpring”?
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