Všetky komponenty
MotionSwap
Obsah, ktorý sa prelína, zatiaľ čo veľkosť ho nasleduje.
WebReact NativeObsah a veľkosť
Vyskúšajte
Najkratšie použitie
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Čo za vás vyrieši
- Prvok mení veľkosť zo svojej veľkosti na obrazovke na prirodzenú veľkosť nového obsahu, takže tlačidlá nikdy neskáču.
- Starý obsah mizne na svojom mieste, zatiaľ čo nový sa objavuje; ani jeden sa počas výmeny nepreskladá.
- Návrat uprostred výmeny pokračuje od toho, čo je na obrazovke, namiesto toho, aby sa kópie vŕšili.
- Potomkovia tvorení len textom sú sami svojou
value; pre všetko ostatné odovzdajte value.
Použite na
- Uložiť, potom Ukladá sa…, potom Uložené.
- Kostra, ktorá sa zmení na kartu profilu.
- Tlačidlo prehrať, ktoré sa zmení na pauzu.
Props
| Prop | Typ | Predvolené | Popis |
|---|
value | unknown | | Identita obsahu; nová hodnota vyvolá výmenu. Potomkovia tvorení len textom sú sami svojou identitou. |
|---|
children | ReactNode | | Obsah. |
|---|
as | element | 'span' | Prvok, ktorý sa renderuje. |
|---|
inline | boolean | as === 'span' | true prispôsobí veľkosť obsahu (popisky, ikony); false vyplní šírku rodiča a animuje výšku. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Kde obsah sedí, kým sa veľkosť mení. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Ako obsah prichádza a odchádza: up stúpa, down klesá, scale rastie. |
|---|
transition | Transition | spring | Krivka timing { duration, easing } alebo pružina { tempo: 'spring', spring }. Pružiny si pri prerušení zachovávajú hybnosť. |
|---|
onMotionComplete | (value) => void | | Spustí sa, keď pohyb dosadne. |
|---|
Ostatné props idú do renderovaného prvku, takže className, style a obsluhy udalostí fungujú ako obvykle.
Použité v týchto príkladoch