Ruch dla React DOM · API Animated z React Native
Napisz ruch raz. Działa płynnie i nigdy się nie psuje.
Animated przenosi Animated z React Native do sieci. Jedna wartość steruje dowolną liczbą elementów bez renderu React w każdej klatce, obsługiwany ruch odtwarza sama przeglądarka, a każde przerwanie kontynuuje od tego, co na ekranie.
npm install @kkwaenggwari/animatedJedna wartość zegara steruje falowaniem wszystkich 64 kształtów. Przesuń wskaźnik nad sceną.
Zmierzone w tym wydaniu
Zmierzone na buildzie 1.0.0 w Chrome bez interfejsu na stacjonarnym PC. Liczby zależą od urządzenia. Jak mierzyliśmy
- 0.00msJavaScript na klatkę, gdy porusza się 400 elementów
Skończony ruch transform i opacity na elementach Animated odtwarza przeglądarka. Własne callbacki klatek strony nie wykonują żadnej pracy.
- 0.13msJavaScript na klatkę, gdy jedna wartość steruje 10 000 elementów
Wartość zapisuje jedną zmienną CSS; każdy element wyprowadza z niej swój styl w CSS.
- 0Renderowania React w trakcie ruchu
Wartości nigdy nie przechodzą przez stan React. Komponenty renderują się, gdy zmieniają się twoje props, a nie gdy zmienia się klatka.
01 · Prosto
API, które już znasz, na zwykłym style React
timing, spring, interpolate, loop i Animated.event zachowują nazwy i konfiguracje z React Native. Wartość trafia prosto do zwykłego propa style, więc przed pierwszym ruchem nie trzeba poznawać żadnego specjalnego komponentu.
- Przenieś kod z React Native, zmieniając nazwę
Animated.ViewnaAnimated.div. - Jedna wartość może naraz poruszać paskiem, tarczą i rzędem kart, każdym z własnym zakresem.
useAnimatedposiada przepis: startuje przy montażu, startuje ponownie, gdy zmienia się zależność, i sprząta przy odmontowaniu.
Przygotowywanie przykładu…
Te same wywołania co w React Native
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />
// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />
const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });
Animated.loop(
Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();02 · Szybko
Bez renderu React w każdej klatce
Wartość hooka to zmienna CSS. Interpolacje liniowe i arytmetyka stają się dokładnymi wyrażeniami calc() tej zmiennej, więc każda klatka to jeden zapis, a resztę wylicza przeglądarka. Skończony ruch transform i opacity na elementach Animated.<tag> odtwarza przeglądarka bez callbacków klatek.
- Zmień liczbę kropek: licznik pokazuje, że React wyrenderował raz na zmianę, nigdy na klatkę.
scopezapisuje wartość raz w kontenerze zamiast w każdym elemencie.inspect(element)mówi, której ścieżki używa każda właściwość i dlaczego.
Przygotowywanie przykładu…
03 · Stabilnie
Przerwij w dowolnym miejscu. Ruch trwa dalej.
Nowy cel zaczyna od miejsca, w którym element jest na ekranie, a sprężyna zachowuje też prędkość, więc zawrócenie w połowie drogi jest płynne zamiast najpierw się zatrzymywać. Kontrolery zadeklarowane w hooku są zatrzymywane i zwalniane przy zastąpieniu i odmontowaniu, a znaczniki wyrenderowane na serwerze animują się dalej po hydratacji.
- Kliknij dwa razy szybko: przy
springtor się wygina, przytimingpozycja zostaje, ale zaczyna się nowa krzywa. - Zatrzymanie zostawia wartość tam, gdzie jest; nic nie skacze do stanu końcowego.
- Żadnych zapomnianych pętli klatek po odmontowaniu, zmianie trasy czy ukryciu karty.
Przygotowywanie przykładu…
Co możesz zbudować
Kompletne wzorce z regulowanymi ustawieniami i pełnym kodem źródłowym.
Wszystkie przykłady- Magnetyczny dokIkony rosną, gdy przechodzi wskaźnik, odpychając sąsiadów, i uspokajają się, gdy odchodzi.
moveInputfollowuseAnimatedCSSmultiply - Talia do przesuwaniaPrzeciągnij górną kartę. Za progiem odlatuje; w przeciwnym razie wraca sprężyście.
dragInputuseAnimatedListenerAnimated.div - Wspólna galeriaKafelek rośnie do widoku szczegółów i kurczy się z powrotem do siatki.
Animated.SceneAnimated.Keepmove
Zbudowane na Animated
Potrzebujesz gotowego komponentu? Animated Chorus.
Przewijane liczby, wędrujące wyróżnienia kart, postęp, arkusze i animowane listy, które od razu działają w React i React Native. Te trzy działają właśnie teraz na tej stronie.
Odwiedź Animated ChorusZacznij w trzy minuty
Zainstaluj pakiet, porusz pierwszą wartość, a potem wybierz przewodnik do zadania, które masz przed sobą.
npm install @kkwaenggwari/animated