Спробуйте
Підготовка прикладу…
Найкоротше використання
<MotionList as="ul" items={todos} renderItem={(todo) => <TodoRow todo={todo} />} />;Що він бере на себе
- Нові елементи входять з обмеженим каскадом, а незмінені стоять на місці.
- Видалені елементи залишають потік і анімовано йдуть на своєму місці, а решта зсувається, закриваючи проміжок.
- Переставлені елементи плавно переїжджають на нові місця.
- Переміщення, перервані іншою зміною, зберігають швидкість.
present={false}анімує вихід усіх елементів, аplayKeyповторює появу.
Для чого підходить
- Список завдань.
- Відфільтровані результати пошуку.
- Кошик покупок.
Props
| Проп | Тип | Типово | Опис |
|---|---|---|---|
items | readonly T[] | —обов’язково | Ваш масив даних. |
getKey | (item) => string | number | item.id | Повертає унікальний стабільний ключ елемента. Типово — item.id, а для рядків і чисел — сам елемент. |
renderItem | (item, index) => ReactNode | item.label | Малює елемент. |
as | element | 'div' | Елемент для рендеру. |
itemAs | element | 'li' | 'div' | Елемент для кожного пункту. |
itemClassName | string | Клас для елемента кожного пункту; itemStyle задає його вбудований стиль. | |
effect | 'rise' | 'fade' | 'scale' | 'slide' | 'rise' | Як елементи входять і йдуть. |
distance | number | 16 | Шлях rise і slide у пікселях. |
stagger | number | 40 | Мілісекунди між елементами, що входять. |
order | 'forward' | 'reverse' | 'forward' | Напрямок каскаду. |
present | boolean | true | false анімує вихід усіх елементів, зберігаючи розкладку; true повертає їх. |
initial | boolean | true | Відтворювати появу під час монтування списку. |
playKey | string | number | Зміна повторює появу. | |
transition | Transition | spring | Перехід для елементів, що входять і йдуть. |
layoutTransition | Transition | spring | Перехід для елементів, що переїжджають на нові місця. |
Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.
Веб і React Native
Кожен елемент отримує обгортку (li всередині ul чи ol, інакше div; itemAs це змінює), що стилізується через itemClassName.
Ключі мають бути унікальними. Обгорніть список у MotionHeight, щоб анімувати і його загальну висоту.
Використовується в прикладах
- Відповідь у чатіПідказки, що згортаються, відповідь, що надходить потоком у рівному темпі, і рядок статусу, що змінюється.
MotionStreamMotionListMotionSwapMotionHeight - Підсумок замовленняКількості, суми рядків і підсумок прокручуються, коли змінюється кошик; повідомлення про купон з’являється й іде; оплата потребує свідомого утримання.
MotionListMotionNumberMotionPresenceMotionHold - ВхідніВкладки-фільтри з живими лічильниками, рядки, які можна змахнути, і список, що закриває проміжок.
MotionHighlightMotionListMotionSwipeMotionNumber