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 отстрани.

Всички компоненти

Един и същ импорт в уеб и в React Native

Metro избира нативната реализация, а уеб bundler-ите — тази за DOM. Всяка платформа възпроизвежда движението така, както най-добре умее.

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} />
    </>
  );
}
ЧастУебReact Native
Transform и opacityWeb Animations API, пружини, изчислени аналитичноAnimated с нативния драйвер
Ширина и височинаWeb Animations APIAnimated с JS драйвер, защото е оформление
Поточен текстЗнаци, които се добавят и плавно се появяват; няколко рендера на React в секундаИстински Text, показан без преливане
Панели и мащабиранеНативен dialog в горния слойПрозрачен Modal; затваря се с бутона „Назад“

Започнете за две минути

Инсталирайте, импортирайте един компонент, подайте стойност.

npm install @kkwaenggwari/animated-chorus

Търсене

Пишете, за да търсите в документацията.