React · React Native · 16 komponenter
Svære interaktioner, færdige.
Animated Chorus er et sæt bevægelseskomponenter til de interaktioner, der er svære at få rigtigt i hånden: rullende tal, streamet tekst, skift, der ændrer størrelse, sheets, pagers, swipe-handlinger og lister, der kun animerer det, der ændrede sig. Ét tag og dine data. Ingen provider, ingen opsætning.
npm install @kkwaenggwari/animated-chorusMålt på dette build
Chrome, 2026-09-28. Alle betingelser og målinger står i guiden om ydeevne. Sådan blev det målt
- 28.0KBKB gzip for alle 16 exports
Hele webindgangspunktet, minificeret. React er den eneste peer.
- 0JS-frame-callbacks under animation
Et tal, en højde og en markering ændrer sig samtidig: browseren afspiller alle 12 animationer.
- 1React-commit pr. værdiændring
MotionNumberrenderes, når værdien ændrer sig, aldrig mens den ruller. - 11React-commits for 3000 streamede tegn
MotionStreamtilføjer tegn direkte og fører dem ind i React nogle få gange i sekundet.
01Nemmest
Ét tag og dine data
Hver komponent virker alene: ingen provider, wrapper-komponent eller opsætningskald. Samlinger tager items og renderItem, og dit layout, dine tekster og stilarter forbliver dine.
- Importér én komponent, og giv en værdi. Det er hele integrationen.
- Lister, faner og pagers læser dit array; nøgler er som standard
item.id. - Tekst forbliver rigtig tekst: den ombrydes, skaleres med skrifttypen og kan markeres.
<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} />;
Seks livekomponenter og den ene kodelinje bag hver.
Forbereder eksemplet…
02Hurtigst
Browseren afspiller. React står stille.
På nettet er der intet animationsbibliotek at indlæse: komponenterne giver bevægelsen videre til Web Animations API, så et rullende tal eller et panel, der ændrer størrelse, koster intet JavaScript pr. frame og ingen React-rendering, mens det bevæger sig.
- 0 JS-frame-callbacks, mens 12 animationer kører samtidig.
- Én React-commit pr. værdiændring, ikke én pr. frame.
- Streamet tekst: 11 React-commits for 3000 tegn. Eksemplet nedenfor tæller sine egne renderinger.
Forbereder eksemplet…
03Mest stabil
Afbryd hvad som helst. Intet hopper.
Hver ny værdi starter fra det, der er på skærmen, og fjedre bevarer deres hastighed, så hurtige klik, datastød og vendinger ser bevidste ud. Når bevægelsen slutter, kører intet videre.
- Tal splitter aldrig: de resterende pladser glider, mens de ruller.
- 200 nye værdier med 5 ms mellemrum: 0 animationer tilbage bagefter og den præcise sluttekst.
- Sikker under React StrictMode. I en React Native-app i baggrunden lander bevægelsen i sin sluttilstand.
Forbereder eksemplet…
16 komponenter grupperet efter opgave
Tal og tekst, indhold, der ændrer størrelse, valg, lister, gestus, overlays og fremskridt. Hver har en live-arbejdsbænk med sine props ved siden af.
Alle komponenterTal og tekst
Indhold og størrelse
Valg og sider
Lister
Gestus
Overlays
Fremskridt
Sat sammen
Komplette skærme, der kombinerer flere komponenter, hver med indstillingerne uden for eksemplet.
Alle eksempler- ChatsvarForslag, der foldes sammen, et svar, der streamer i et jævnt tempo, og en statuslinje, der skifter.
MotionStreamMotionListMotionSwapMotionHeight - KasseoversigtAntal, linjetotaler og totalen ruller, når kurven ændrer sig; rabatbeskeden kommer og går; at betale kræver et bevidst tryk og hold.
MotionListMotionNumberMotionPresenceMotionHold - IndbakkeFilterfaner med live-tal, rækker, der kan swipes væk, og en liste, der lukker hullet.
MotionHighlightMotionListMotionSwipeMotionNumber - FotofeedSwipe gennem fotos, hop med miniaturer, åbn et vilkårligt foto i fuld skærm, og træk dets detaljer op.
MotionPagerMotionHighlightMotionZoomMotionSheet
Samme import på nettet og i React Native
Metro vælger native-implementeringen, og webbundlere vælger DOM-versionen. Hver platform afspiller bevægelse, som den gør det bedst.
// 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} />
</>
);
}| Del | Web | React Native |
|---|---|---|
| Transforms og opacity | Web Animations API, fjedre samplet analytisk | Animated med native driver |
| Bredde og højde | Web Animations API | Animated med JS-driver, fordi det er layout |
| Streamet tekst | Tegn tilføjes og tones ind; nogle få React-renderinger i sekundet | En rigtig Text, vist uden toning |
| Sheets og zoom | En native dialog i det øverste lag | En gennemsigtig Modal; tilbageknappen lukker den |
Kom i gang på to minutter
Installér, importér én komponent, giv en værdi.
npm install @kkwaenggwari/animated-chorus