0Pricing
React Academy · Lekcja

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

  1. Podstawy React Spring: hook useSpring
  2. Animowane komponenty i interpolacja stylów
  3. useTrail i useChain do sekwencji
  4. Animacje sterowane gestami z use-gesture
← Powrót do React Academy