Усі компоненти

MotionSwap

Вміст, що плавно змінюється, поки розмір підлаштовується.

ВебReact NativeВміст і розмір

Спробуйте

Підготовка прикладу…

Найкоротше використання

SaveButton.jsx
<button onClick={save}>
  <MotionSwap value={status} effect="up">
    {status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
  </MotionSwap>
</button>;

Що він бере на себе

  • Елемент змінює розмір від поточного на екрані до природного розміру нового вмісту, тож кнопки ніколи не стрибають.
  • Старий вміст зникає на місці, поки з’являється новий; жоден не перебудовується під час заміни.
  • Повернення назад посеред заміни продовжується з того, що на екрані, а не накопичує копії.
  • Дочірній текст сам є своїм value; для всього іншого передайте value.

Для чого підходить

  • «Зберегти», потім «Збереження…», потім «Збережено».
  • Скелетон, що перетворюється на картку профілю.
  • Кнопка відтворення, що стає паузою.

Props

ПропТипТиповоОпис
valueunknownІдентичність вмісту; нове значення спричиняє заміну. Дочірній текст сам є своєю ідентичністю.
childrenReactNodeВміст.
aselement'span'Елемент для рендеру.
inlinebooleanas === 'span'true підлаштовує розмір під вміст (підписи, іконки); false заповнює ширину батька й анімує висоту.
align'start' | 'center' | 'end''center'Де розташований вміст, поки змінюється розмір.
effect'fade' | 'up' | 'down' | 'scale''fade'Як вміст входить і йде: up піднімається, down опускається, scale росте.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(value) => voidВиконується, коли рух зупиняється.

Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.

Веб і React Native

inline (типово під час рендеру як span) анімує ширину й висоту; inline={false} заповнює ширину батька й анімує висоту.

У React Native вбудовані заміни вимірюють новий вміст в один рядок; для вмісту з переносами використовуйте inline={false}.

Використовується в прикладах

Пошук

Почніть вводити, щоб шукати в документації.