Всички компоненти
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 | Тип | По подразбиране | Описание |
|---|
value | unknown | | Идентичност на съдържанието; нова стойност предизвиква смяна. Дъщерният текст сам е своя идентичност. |
|---|
children | ReactNode | | Съдържанието. |
|---|
as | element | 'span' | Елементът за рендериране. |
|---|
inline | boolean | as === 'span' | true нагласява размера към съдържанието (етикети, икони); false запълва ширината на родителя и анимира височината. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Къде е съдържанието, докато размерът се променя. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Как съдържанието влиза и излиза: up се издига, down се спуска, scale расте. |
|---|
transition | Transition | spring | Крива на timing { duration, easing } или пружина { tempo: 'spring', spring }. Пружините запазват инерцията си при прекъсване. |
|---|
onMotionComplete | (value) => void | | Изпълнява се, когато движението спре. |
|---|
Другите props отиват към рендерирания елемент, така че className, style и обработчиците на събития работят както обикновено.