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

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

PropТипПо подразбиранеОписание
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}.

Използван в тези примери

Търсене

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