React · React Native · 16 компонента
Трудните взаимодействия — вече готови.
Animated Chorus е набор от компоненти за движение за взаимодействията, които трудно се правят правилно ръчно: превъртащи се числа, поточен текст, смени с промяна на размера, панели, пейджъри, действия с плъзгане и списъци, които анимират само промененото. Един таг и вашите данни. Без provider, без настройка.
npm install @kkwaenggwari/animated-chorusИзмерено на тази компилация
Chrome, 2026-09-28. Всички условия и проби са в ръководството за производителност. Как е измерено
- 28.0KBKB gzip за всичките 16 експорта
Цялата входна точка за уеб, минифицирана. React е единствената peer зависимост.
- 0Callback-и за кадри на JS по време на анимация
Число, височина и подчертаване се променят заедно: браузърът възпроизвежда всичките 12 анимации.
- 1Commit на React на промяна на стойност
MotionNumberсе рендерира, когато стойността се промени, никога докато се превърта. - 11Commit-и на React за 3000 поточни знака
MotionStreamдобавя знаци директно и ги предава на React само няколко пъти в секунда.
01Най-лесно
Един таг и вашите данни
Всеки компонент работи самостоятелно: без provider, обвиващ компонент или извикване за настройка. Колекциите приемат items и renderItem, а оформлението, текстовете и стиловете остават ваши.
- Импортирайте един компонент и подайте стойност. Това е цялата интеграция.
- Списъци, раздели и пейджъри четат вашия масив; ключовете по подразбиране са
item.id. - Текстът остава истински текст: пренася се, мащабира се с шрифта и може да се маркира.
<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} />;
Шест компонента на живо и единственият ред код зад всеки от тях.
Подготовка на примера…
02Най-бързо
Браузърът възпроизвежда. React стои неподвижно.
В уеб няма библиотека за анимации, която да се зарежда: компонентите предават движението на Web Animations API, така че превъртащо се число или панел, който сменя размера си, не струват JavaScript на кадър, нито рендер на React, докато се движат.
- 0 callback-а за кадри на JS, докато 12 анимации вървят заедно.
- Един commit на React на промяна на стойност, а не по един на кадър.
- Поточен текст: 11 commit-а на React за 3000 знака. Примерът по-долу брои собствените си рендери.
Подготовка на примера…
03Най-стабилно
Прекъснете каквото и да е. Нищо не подскача.
Всяка нова стойност започва от това, което е на екрана, а пружините запазват скоростта си, така че бързите кликове, изблиците от данни и обръщанията изглеждат умишлени. Когато движението свърши, нищо не остава да работи.
- Числата никога не се разпадат: оставащите разряди се плъзгат, докато се превъртат.
- 200 нови стойности през 5 ms: след тях остават 0 анимации и точният краен текст.
- Безопасно в React StrictMode. В приложение на React Native във фонов режим движението стига до крайното си състояние.
Подготовка на примера…
16 компонента, групирани по задача
Числа и текст, съдържание с променлив размер, избор, списъци, жестове, наслагвания и напредък. Всеки има работна маса на живо с props отстрани.
Всички компонентиЧисла и текст
Съдържание и размер
Избор и страници
Списъци
Жестове
Наслагвания
Напредък
Заедно
Пълни екрани, които съчетават няколко компонента, всеки с настройки извън примера.
Всички примери- Отговор в чатПредложения, които се свиват, отговор, който тече с равномерно темпо, и ред за статус, който се сменя.
MotionStreamMotionListMotionSwapMotionHeight - Обобщение на поръчкатаКоличествата, сумите по редове и общата сума се превъртат с промените в количката; съобщението за купона влиза и излиза; плащането изисква съзнателно задържане.
MotionListMotionNumberMotionPresenceMotionHold - Входяща пощаРаздели-филтри с броячи на живо, редове, които могат да се отместят, и списък, който затваря празнината.
MotionHighlightMotionListMotionSwipeMotionNumber - Поток от снимкиПлъзгайте през снимките, прескачайте с миниатюрите, отворете която и да е снимка на цял екран и издърпайте подробностите ѝ.
MotionPagerMotionHighlightMotionZoomMotionSheet
Един и същ импорт в уеб и в React Native
Metro избира нативната реализация, а уеб bundler-ите — тази за DOM. Всяка платформа възпроизвежда движението така, както най-добре умее.
// 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} />
</>
);
}| Част | Уеб | React Native |
|---|---|---|
| Transform и opacity | Web Animations API, пружини, изчислени аналитично | Animated с нативния драйвер |
| Ширина и височина | Web Animations API | Animated с JS драйвер, защото е оформление |
| Поточен текст | Знаци, които се добавят и плавно се появяват; няколко рендера на React в секунда | Истински Text, показан без преливане |
| Панели и мащабиране | Нативен dialog в горния слой | Прозрачен Modal; затваря се с бутона „Назад“ |
Започнете за две минути
Инсталирайте, импортирайте един компонент, подайте стойност.
npm install @kkwaenggwari/animated-chorus