Начало · 4 шага
Начало
Установите пакет, отрендерите первый компонент, передайте компоненту свои данные и выберите, как он движется. Ни на одном шаге не нужны provider или настройка.
Установка
Chorus требует React 19.2 или новее. В приложении React Native сам React Native — необязательная peer-зависимость, и тот же пакет автоматически выбирает нативную сборку.
npm install @kkwaenggwari/animated-chorusБольше ничего настраивать не нужно: никаких provider, плагинов или таблиц стилей.
Ваш первый компонент
Отрендерите
MotionNumberсо значением из состояния. Измените состояние — и число прокрутится. Нажмите+1, затем×10, чтобы увидеть, как въезжает новый разряд.App.jsx import { useState } from 'react'; import { MotionNumber } from '@kkwaenggwari/animated-chorus'; export default function App() { const [count, setCount] = useState(9); return ( <button onClick={() => setCount(count + 1)}> <MotionNumber value={count} /> </button> ); }Подготовка примера…
Переключите
modeнаrollв настройках: изменившиеся разряды проходят через промежуточные цифры.Передайте свои данные
Компоненты, которые показывают несколько вещей, принимают массив.
items— ваши данные,getKeyвозвращает стабильный ключ (по умолчаниюitem.id, а для строк и чисел — сам элемент), аrenderItemрисует каждый элемент. Компонент сам рендерит и измеряет элементы.Tabs.jsx import { MotionHighlight } from '@kkwaenggwari/animated-chorus'; const tabs = [ { id: 'overview', label: 'Overview' }, { id: 'activity', label: 'Activity' }, ]; export function Tabs({ tab, setTab }) { // Keys come from item.id; labels from item.label, or renderItem. return <MotionHighlight items={tabs} value={tab} onValueChange={setTab} />; }Ключи должны быть уникальными. Когда массив меняется, анимируются только элементы, которые вошли, ушли или переместились.
Выберите, как он движется
Каждый компонент принимает
transition: кривую timing или пружину.motionTokensпредлагает несколько пресетов, а пружина сdurationоткалибрована так, чтобы закончиться ровно в этот момент.Panel.jsx import { MotionHeight, motionTokens } from '@kkwaenggwari/animated-chorus'; <MotionHeight open={open} transition={motionTokens.spring.gentle}>…</MotionHeight> <MotionHeight open={open} transition={{ duration: 300, easing: 'easeOut' }}>…</MotionHeight> <MotionHeight open={open} transition={{ tempo: 'spring', spring: { stiffness: 300, damping: 30 }, duration: 500 }}>…</MotionHeight>React Native использует тот же импорт и те же props.
Вот и вся настройка
Остальное — выбор компонентов. У каждого есть стенд, где его можно настроить перед копированием кода.