Все компоненты

MotionList

Список из данных, который анимирует только изменившееся.

ВебReact NativeСписки

Попробуйте

Подготовка примера…

Кратчайшее использование

Todos.jsx
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;

Что он берёт на себя

  • Новые элементы входят с ограниченным каскадом, а нетронутые стоят на месте.
  • Удалённые элементы покидают поток и анимированно уходят на своём месте, а остальные сдвигаются, закрывая промежуток.
  • Переставленные элементы плавно переезжают на новые места.
  • Перемещения, прерванные другим изменением, сохраняют скорость.
  • present={false} анимирует уход всех элементов, а playKey повторяет появление.

Для чего подходит

  • Список задач.
  • Отфильтрованные результаты поиска.
  • Корзина покупок.

Props

ПропТипПо умолчаниюОписание
itemsreadonly T[]—обязательноВаш массив данных.
getKey(item) => string | numberitem.idВозвращает уникальный стабильный ключ элемента. По умолчанию — item.id, а для строк и чисел — сам элемент.
renderItem(item, index) => ReactNodeitem.labelРисует элемент.
aselement'div'Элемент для рендера.
itemAselement'li' | 'div'Элемент для каждого пункта.
itemClassNamestringКласс для элемента каждого пункта; itemStyle задаёт его встроенный стиль.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Как элементы входят и уходят.
distancenumber16Путь rise и slide в пикселях.
staggernumber40Миллисекунды между входящими элементами.
order'forward' | 'reverse''forward'Направление каскада.
presentbooleantruefalse анимирует уход всех элементов, сохраняя раскладку; true возвращает их.
initialbooleantrueВоспроизводить появление при монтировании списка.
playKeystring | numberИзменение повторяет появление.
transitionTransitionspringПереход для входящих и уходящих элементов.
layoutTransitionTransitionspringПереход для элементов, переезжающих на новые места.

Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.

Веб и React Native

Каждый элемент получает обёртку (li внутри ul или ol, иначе div; itemAs это меняет), стилизуемую через itemClassName.

Ключи должны быть уникальными. Оберните список в MotionHeight, чтобы анимировать и его общую высоту.

Используется в примерах

Поиск

Начните вводить, чтобы искать в документации.