Všechny komponenty
MotionSwap
Obsah, který se prolíná, zatímco velikost ho následuje.
WebReact NativeObsah a velikost
Vyzkoušejte
Nejkratší použití
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Co za vás vyřeší
- Prvek mění velikost ze své velikosti na obrazovce na přirozenou velikost nového obsahu, takže tlačítka nikdy neskáčou.
- Starý obsah mizí na svém místě, zatímco nový se objevuje; ani jeden se během výměny nepřeskládá.
- Návrat uprostřed výměny pokračuje od toho, co je na obrazovce, místo aby se kopie vršily.
- Potomci tvoření jen textem jsou sami svou
value; pro vše ostatní předejte value.
Použijte pro
- Uložit, pak Ukládání…, pak Uloženo.
- Kostra, která se změní v kartu profilu.
- Tlačítko přehrát, které se změní v pauzu.
Props
| Prop | Typ | Výchozí | Popis |
|---|
value | unknown | | Identita obsahu; nová hodnota vyvolá výměnu. Potomci tvoření jen textem jsou sami svou identitou. |
|---|
children | ReactNode | | Obsah. |
|---|
as | element | 'span' | Prvek, který se renderuje. |
|---|
inline | boolean | as === 'span' | true přizpůsobí velikost obsahu (popisky, ikony); false vyplní šířku rodiče a animuje výšku. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Kde obsah sedí, zatímco se velikost mění. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Jak obsah přichází a odchází: up stoupá, down klesá, scale roste. |
|---|
transition | Transition | spring | Křivka timing { duration, easing } nebo pružina { tempo: 'spring', spring }. Pružiny si při přerušení zachovávají hybnost. |
|---|
onMotionComplete | (value) => void | | Spustí se, když pohyb dosedne. |
|---|
Ostatní props jdou do renderovaného prvku, takže className, style a obsluhy událostí fungují jako obvykle.
Použito v těchto příkladech