Toate componentele

MotionSwap

Conținut care trece prin fondu încrucișat în timp ce mărimea îl urmează.

WebReact NativeConținut și mărime

Încercați

Se pregătește exemplul…

Cea mai scurtă utilizare

SaveButton.jsx
<button onClick={save}>
  <MotionSwap value={status} effect="up">
    {status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
  </MotionSwap>
</button>;

Ce rezolvă în locul dumneavoastră

  • Elementul trece de la mărimea de pe ecran la mărimea naturală a noului conținut, așa că butoanele nu sar niciodată.
  • Conținutul vechi se estompează pe loc în timp ce apare cel nou; niciunul nu se reașază în timpul schimbării.
  • Revenirea în mijlocul unei schimbări continuă de la ce e pe ecran, în loc să adune copii.
  • Copiii cu text simplu sunt propriul value; pentru orice altceva transmiteți value.

Folosiți-o pentru

  • Salvează, apoi Se salvează…, apoi Salvat.
  • Un schelet care devine card de profil.
  • Un buton de redare care devine pauză.

Props

PropTipImplicitDescriere
valueunknownIdentitatea conținutului; o valoare nouă declanșează schimbarea. Copiii cu text simplu sunt propria identitate.
childrenReactNodeConținutul.
aselement'span'Elementul de randat.
inlinebooleanas === 'span'true se dimensionează după conținut (etichete, pictograme); false umple lățimea părintelui și animă înălțimea.
align'start' | 'center' | 'end''center'Unde stă conținutul cât se schimbă mărimea.
effect'fade' | 'up' | 'down' | 'scale''fade'Cum intră și iese conținutul: up urcă, down coboară, scale crește.
transitionTransitionspringO curbă timing { duration, easing } sau un arc { tempo: 'spring', spring }. Arcurile își păstrează impulsul când sunt întrerupte.
onMotionComplete(value) => voidRulează când mișcarea se așază.

Celelalte props merg la elementul randat, așa că className, style și handlerele de evenimente funcționează ca de obicei.

Web și React Native

inline (implicit când se randează ca span) animă lățimea și înălțimea; inline={false} umple lățimea părintelui și animă înălțimea.

În React Native, schimbările inline măsoară noul conținut pe un singur rând; folosiți inline={false} pentru conținut care se încadrează pe mai multe rânduri.

Folosită în aceste exemple

Căutare

Tastați pentru a căuta în documentație.