Všetky komponenty

MotionSwap

Obsah, ktorý sa prelína, zatiaľ čo veľkosť ho nasleduje.

WebReact NativeObsah a veľkosť

Vyskúšajte

Príprava príkladu…

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

PropTypPredvolenéPopis
valueunknownIdentita obsahu; nová hodnota vyvolá výmenu. Potomkovia tvorení len textom sú sami svojou identitou.
childrenReactNodeObsah.
aselement'span'Prvok, ktorý sa renderuje.
inlinebooleanas === '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.
transitionTransitionspringKrivka timing { duration, easing } alebo pružina { tempo: 'spring', spring }. Pružiny si pri prerušení zachovávajú hybnosť.
onMotionComplete(value) => voidSpustí sa, keď pohyb dosadne.

Ostatné props idú do renderovaného prvku, takže className, style a obsluhy udalostí fungujú ako obvykle.

Web a React Native

inline (predvolené pri renderi ako span) animuje šírku aj výšku; inline={false} vyplní šírku rodiča a animuje výšku.

V React Native merajú výmeny inline nový obsah na jednom riadku; pre obsah, ktorý sa zalamuje, použite inline={false}.

Použité v týchto príkladoch

Hľadať

Píšte a hľadajte v dokumentácii.