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.

Instalacja
npm install @kkwaenggwari/animated-chorus

Zmierzone 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

    MotionNumber renderuje się, gdy zmienia się wartość, nigdy w trakcie przewijania.

  • 11Zatwierdzenia React dla 3000 strumieniowanych znaków

    MotionStream dopisuje 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 komponenty

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.

App.jsx
// 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 opacityWeb Animations API, sprężyny próbkowane analitycznieAnimated ze sterownikiem natywnym
Szerokość i wysokośćWeb Animations APIAnimated ze sterownikiem JS, bo to układ
Tekst strumieniowanyZnaki dopisywane i pojawiające się stopniowo; kilka renderowań React na sekundęPrawdziwy Text, odsłaniany bez zanikania
Arkusze i powiększenieNatywny dialog w warstwie górnejPrzezroczysty Modal; zamyka go przycisk wstecz

Zacznij w dwie minuty

Zainstaluj, zaimportuj komponent, przekaż wartość.

npm install @kkwaenggwari/animated-chorus

Szukaj

Zacznij pisać, aby przeszukać dokumentację.