React · React Native · 16 komponentów
Trudne interakcje, gotowe.
Animated Chorus to zestaw komponentów ruchu do interakcji, które trudno zrobić dobrze ręcznie: przewijane liczby, tekst strumieniowany, zamiany ze zmianą rozmiaru, arkusze, pagery, akcje przesunięciem i listy animujące tylko to, co się zmieniło. Jeden tag i twoje dane. Bez providera, bez konfiguracji.
npm install @kkwaenggwari/animated-chorusZmierzone na tym buildzie
Chrome, 2026-09-28. Wszystkie warunki i próbki są w przewodniku o wydajności. Jak to zmierzono
- 28.0KBKB gzip dla wszystkich 16 eksportów
Cały punkt wejścia dla sieci, zminifikowany. React to jedyna zależność peer.
- 0Callbacki klatek JS podczas animacji
Liczba, wysokość i wyróżnienie zmieniają się razem: przeglądarka odtwarza wszystkie 12 animacji.
- 1Zatwierdzenie React na zmianę wartości
MotionNumberrenderuje się, gdy zmienia się wartość, nigdy w trakcie przewijania. - 11Zatwierdzenia React dla 3000 strumieniowanych znaków
MotionStreamdopisuje znaki bezpośrednio i przekazuje je do React kilka razy na sekundę.
01Najprościej
Jeden tag i twoje dane
Każdy komponent działa samodzielnie: bez providera, komponentu opakowującego i wywołania konfiguracji. Kolekcje przyjmują items i renderItem, a układ, teksty i style zostają twoje.
- Zaimportuj komponent i przekaż wartość. To cała integracja.
- Listy, karty i pagery czytają twoją tablicę; klucze domyślnie to
item.id. - Tekst pozostaje prawdziwym tekstem: zawija się, skaluje z czcionką i da się go zaznaczyć.
<MotionNumber value={total} />;<MotionSwap value={status}>{label}</MotionSwap>;<MotionHeight open={open}>{details}</MotionHeight>;<MotionHighlight items={tabs} value={tab} onValueChange={setTab} />;<MotionList items={tasks} renderItem={(task) => task.title} />;<ProgressRing value={progress} />;
Sześć komponentów na żywo i jedna linia kodu za każdym z nich.
Przygotowywanie przykładu…
02Najszybciej
Odtwarza przeglądarka. React stoi w miejscu.
W sieci nie ma biblioteki animacji do wczytania: komponenty przekazują ruch do Web Animations API, więc przewijana liczba czy zmieniający rozmiar panel nie kosztują ani JavaScriptu na klatkę, ani renderu React w trakcie ruchu.
- 0 callbacków klatek JS, gdy 12 animacji działa naraz.
- Jedno zatwierdzenie React na zmianę wartości, nie jedno na klatkę.
- Tekst strumieniowany: 11 zatwierdzeń React na 3000 znaków. Przykład poniżej liczy własne renderowania.
Przygotowywanie przykładu…
03Najstabilniej
Przerwij cokolwiek. Nic nie skacze.
Każda nowa wartość zaczyna od tego, co na ekranie, a sprężyny zachowują prędkość, więc szybkie kliknięcia, serie danych i zawrócenia wyglądają na zamierzone. Gdy ruch się kończy, nic nie zostaje uruchomione.
- Liczby nigdy się nie rozpadają: pozostałe cyfry przesuwają się w trakcie przewijania.
- 200 nowych wartości co 5 ms: potem zostaje 0 animacji i dokładny tekst końcowy.
- Bezpieczne w React StrictMode. W aplikacji React Native w tle ruch przechodzi do stanu końcowego.
Przygotowywanie przykładu…
16 komponentów pogrupowanych według zadania
Liczby i tekst, treść zmieniająca rozmiar, wybór, listy, gesty, nakładki i postęp. Każdy ma stanowisko na żywo z props z boku.
Wszystkie komponentyLiczby i tekst
Treść i rozmiar
Wybór i strony
Listy
Gesty
Nakładki
Postęp
Razem
Kompletne ekrany łączące kilka komponentów, każdy z ustawieniami poza przykładem.
Wszystkie przykłady- Odpowiedź w czaciePodpowiedzi, które się zwijają, odpowiedź strumieniowana w równym tempie i zmieniająca się linia statusu.
MotionStreamMotionListMotionSwapMotionHeight - Podsumowanie zamówieniaIlości, sumy pozycji i suma całkowita przewijają się, gdy zmienia się koszyk; komunikat o kuponie wchodzi i odchodzi; płatność wymaga świadomego przytrzymania.
MotionListMotionNumberMotionPresenceMotionHold - Skrzynka odbiorczaKarty filtrów z licznikami na żywo, wiersze do odrzucenia przesunięciem i lista, która zamyka lukę.
MotionHighlightMotionListMotionSwipeMotionNumber - Feed zdjęćPrzewijaj zdjęcia, przeskakuj miniaturami, otwórz dowolne zdjęcie na pełnym ekranie i wysuń jego szczegóły.
MotionPagerMotionHighlightMotionZoomMotionSheet
Ten sam import w sieci i w React Native
Metro wybiera implementację natywną, a bundlery sieciowe implementację DOM. Każda platforma odtwarza ruch tak, jak robi to najlepiej.
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';
export function Score({ points, players }) {
return (
<>
<MotionNumber value={points} />
<MotionList items={players} renderItem={(player) => player.name} />
</>
);
}| Część | Sieć | React Native |
|---|---|---|
| Transform i opacity | Web Animations API, sprężyny próbkowane analitycznie | Animated ze sterownikiem natywnym |
| Szerokość i wysokość | Web Animations API | Animated ze sterownikiem JS, bo to układ |
| Tekst strumieniowany | Znaki dopisywane i pojawiające się stopniowo; kilka renderowań React na sekundę | Prawdziwy Text, odsłaniany bez zanikania |
| Arkusze i powiększenie | Natywny dialog w warstwie górnej | Przezroczysty Modal; zamyka go przycisk wstecz |
Zacznij w dwie minuty
Zainstaluj, zaimportuj komponent, przekaż wartość.
npm install @kkwaenggwari/animated-chorus