React · React Native · 16 komponentov
Náročné interakcie, hotové.
Animated Chorus je sada pohybových komponentov pre interakcie, ktoré je ťažké urobiť správne ručne: rolujúce čísla, streamovaný text, výmeny so zmenou veľkosti, sheety, pagery, akcie potiahnutím a zoznamy, ktoré animujú len to, čo sa zmenilo. Jeden tag a vaše údaje. Žiadny provider, žiadne nastavenie.
npm install @kkwaenggwari/animated-chorusNamerané na tomto zostavení
Chrome, 2026-09-28. Všetky podmienky a vzorky sú v sprievodcovi výkonom. Ako sa meralo
- 28.0KBKB gzip pre všetkých 16 exportov
Celý webový vstupný bod, minifikovaný. React je jediná peer závislosť.
- 0Callbacky snímok JS počas animácie
Číslo, výška a zvýraznenie sa menia spolu: prehliadač prehráva všetkých 12 animácií.
- 1Commit Reactu na zmenu hodnoty
MotionNumbersa renderuje, keď sa hodnota zmení, nikdy počas rolovania. - 11Commity Reactu pre 3000 streamovaných znakov
MotionStreampripája znaky priamo a do Reactu ich odovzdáva len niekoľkokrát za sekundu.
01Najjednoduchšie
Jeden tag a vaše údaje
Každý komponent funguje sám: žiadny provider, obaľovací komponent ani volanie nastavenia. Kolekcie prijímajú items a renderItem a vaše rozloženie, texty aj štýly zostávajú vaše.
- Naimportujte jeden komponent a odovzdajte hodnotu. To je celá integrácia.
- Zoznamy, karty a pagery čítajú vaše pole; kľúče sú predvolene
item.id. - Text zostáva skutočným textom: zalamuje sa, škáluje s písmom a dá sa označiť.
<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} />;
Šesť živých komponentov a jediný riadok kódu za každým z nich.
Príprava príkladu…
02Najrýchlejšie
Prehráva prehliadač. React stojí.
Na webe netreba načítavať žiadnu knižnicu animácií: komponenty odovzdávajú pohyb Web Animations API, takže rolujúce číslo alebo panel meniaci veľkosť nestojí počas pohybu žiadny JavaScript na snímku ani render Reactu.
- 0 callbackov snímok JS, kým 12 animácií beží spolu.
- Jeden commit Reactu na zmenu hodnoty, nie jeden na snímku.
- Streamovaný text: 11 commitov Reactu pre 3000 znakov. Príklad nižšie počíta svoje vlastné rendery.
Príprava príkladu…
03Najstabilnejšie
Prerušte čokoľvek. Nič neskáče.
Každá nová hodnota začína od toho, čo je na obrazovke, a pružiny si zachovávajú rýchlosť, takže rýchle kliknutia, nárazy údajov aj obraty pôsobia zámerne. Keď pohyb skončí, nič ďalej nebeží.
- Čísla sa nikdy nerozpadnú: zvyšné rády kĺžu, kým rolujú.
- 200 nových hodnôt po 5 ms: potom zostáva 0 animácií a presný konečný text.
- Bezpečné v React StrictMode. V aplikácii React Native na pozadí dosadne pohyb do koncového stavu.
Príprava príkladu…
16 komponentov zoskupených podľa úlohy
Čísla a text, obsah meniaci veľkosť, výber, zoznamy, gestá, prekrytia a priebeh. Každý má živý pracovný stôl s props na boku.
Všetky komponentyČísla a text
Obsah a veľkosť
Výber a stránky
Zoznamy
Gestá
Prekrytia
Priebeh
Dohromady
Hotové obrazovky kombinujúce niekoľko komponentov, každá s nastavením mimo príkladu.
Všetky príklady- Odpoveď v chateNávrhy, ktoré sa zbalia, odpoveď streamovaná stálym tempom a stavový riadok, ktorý sa vymení.
MotionStreamMotionListMotionSwapMotionHeight - Súhrn pokladneMnožstvá, súčty riadkov aj celkový súčet rolujú so zmenami košíka; upozornenie na kupón prichádza a odchádza; platenie vyžaduje zámerné podržanie.
MotionListMotionNumberMotionPresenceMotionHold - Doručená poštaKarty filtrov so živými počtami, riadky, ktoré možno odsunúť potiahnutím, a zoznam, ktorý zacelí medzeru.
MotionHighlightMotionListMotionSwipeMotionNumber - Feed fotiekListujte fotkami potiahnutím, preskakujte náhľady, otvorte ľubovoľnú fotku na celú obrazovku a vytiahnite jej podrobnosti.
MotionPagerMotionHighlightMotionZoomMotionSheet
Rovnaký import na webe aj v React Native
Metro vyberie natívnu implementáciu a webové bundlery verziu pre DOM. Každá platforma prehráva pohyb tak, ako to vie najlepšie.
// 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} />
</>
);
}| Časť | Web | React Native |
|---|---|---|
| Transformácie a opacity | Web Animations API, pružiny vzorkované analyticky | Animated s natívnym driverom |
| Šírka a výška | Web Animations API | Animated s driverom JS, pretože ide o rozloženie |
| Streamovaný text | Znaky sa pripájajú a plynulo objavujú; niekoľko renderov Reactu za sekundu | Skutočný Text, odhalený bez prelínania |
| Sheety a zoom | Natívny dialog v hornej vrstve | Priehľadný Modal; zavrie ho tlačidlo späť |
Začnite za dve minúty
Nainštalujte, naimportujte jeden komponent, odovzdajte hodnotu.
npm install @kkwaenggwari/animated-chorus