React · React Native · 16 komponent
Obtížné interakce, hotové.
Animated Chorus je sada pohybových komponent pro interakce, které je těžké udělat správně ručně: rolující čísla, streamovaný text, výměny se změnou velikosti, sheety, pagery, akce přejetím a seznamy, které animují jen to, co se změnilo. Jeden tag a vaše data. Žádný provider, žádné nastavení.
npm install @kkwaenggwari/animated-chorusZměřeno na tomto sestavení
Chrome, 2026-09-28. Všechny podmínky a vzorky jsou v průvodci výkonem. Jak se měřilo
- 28.0KBKB gzip pro všech 16 exportů
Celý webový vstupní bod, minifikovaný. React je jediná peer závislost.
- 0Callbacky snímků JS během animace
Číslo, výška a zvýraznění se mění společně: prohlížeč přehrává všech 12 animací.
- 1Commit Reactu na změnu hodnoty
MotionNumberse renderuje, když se hodnota změní, nikdy během rolování. - 11Commity Reactu pro 3000 streamovaných znaků
MotionStreampřipojuje znaky přímo a do Reactu je předává jen několikrát za sekundu.
01Nejsnazší
Jeden tag a vaše data
Každá komponenta funguje sama: žádný provider, obalová komponenta ani volání nastavení. Kolekce přijímají items a renderItem a vaše rozvržení, texty i styly zůstávají vaše.
- Naimportujte jednu komponentu a předejte hodnotu. To je celá integrace.
- Seznamy, karty a pagery čtou vaše pole; klíče jsou ve výchozím stavu
item.id. - Text zůstává skutečným textem: zalamuje se, škáluje s písmem a dá se označit.
<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} />;
Šest živých komponent a jediný řádek kódu za každou z nich.
Příprava příkladu…
02Nejrychlejší
Přehrává prohlížeč. React stojí.
Na webu není potřeba načítat žádnou knihovnu animací: komponenty předávají pohyb Web Animations API, takže rolující číslo nebo panel měnící velikost nestojí během pohybu žádný JavaScript na snímek ani render Reactu.
- 0 callbacků snímků JS, zatímco 12 animací běží společně.
- Jeden commit Reactu na změnu hodnoty, ne jeden na snímek.
- Streamovaný text: 11 commitů Reactu pro 3000 znaků. Příklad níže počítá své vlastní rendery.
Příprava příkladu…
03Nejstabilnější
Přerušte cokoli. Nic neskáče.
Každá nová hodnota začíná od toho, co je na obrazovce, a pružiny si zachovávají rychlost, takže rychlá kliknutí, nárazy dat i obraty působí záměrně. Když pohyb skončí, nic dál neběží.
- Čísla se nikdy nerozpadnou: zbývající řády klouzají, zatímco rolují.
- 200 nových hodnot po 5 ms: potom zbývá 0 animací a přesný konečný text.
- Bezpečné v React StrictMode. V aplikaci React Native na pozadí dosedne pohyb do koncového stavu.
Příprava příkladu…
16 komponent seskupených podle úlohy
Čísla a text, obsah měnící velikost, výběr, seznamy, gesta, překryvy a průběh. Každá má živý pracovní stůl s props po straně.
Všechny komponentyČísla a text
Obsah a velikost
Výběr a stránky
Seznamy
Gesta
Překryvy
Průběh
Dohromady
Hotové obrazovky kombinující několik komponent, každá s nastavením mimo příklad.
Všechny příklady- Odpověď v chatuNávrhy, které se sbalí, odpověď streamovaná stálým tempem a stavový řádek, který se vymění.
MotionStreamMotionListMotionSwapMotionHeight - Souhrn pokladnyMnožství, součty řádků i celkový součet rolují se změnami košíku; upozornění na kupón přichází a odchází; placení vyžaduje záměrné podržení.
MotionListMotionNumberMotionPresenceMotionHold - Doručená poštaKarty filtrů s živými počty, řádky, které lze odsunout přejetím, a seznam, který zacelí mezeru.
MotionHighlightMotionListMotionSwipeMotionNumber - Feed fotekListujte fotkami přejetím, přeskakujte náhledy, otevřete libovolnou fotku na celou obrazovku a vytáhněte její podrobnosti.
MotionPagerMotionHighlightMotionZoomMotionSheet
Stejný import na webu i v React Native
Metro vybere nativní implementaci a webové bundlery verzi pro DOM. Každá platforma přehrává pohyb tak, jak to umí nejlépe.
// 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} />
</>
);
}| Část | Web | React Native |
|---|---|---|
| Transformace a opacity | Web Animations API, pružiny vzorkované analyticky | Animated s nativním driverem |
| Šířka a výška | Web Animations API | Animated s driverem JS, protože jde o rozvržení |
| Streamovaný text | Znaky se připojují a plynule objevují; několik renderů Reactu za sekundu | Skutečný Text, odhalený bez prolnutí |
| Sheety a zoom | Nativní dialog v horní vrstvě | Průhledný Modal; zavře ho tlačítko zpět |
Začněte za dvě minuty
Nainstalujte, naimportujte jednu komponentu, předejte hodnotu.
npm install @kkwaenggwari/animated-chorus