Alle komponenter

MotionSwap

Innhold som krysstones mens størrelsen følger etter.

WebReact NativeInnhold og størrelse

Prøv det

Forbereder eksempelet …

Korteste bruk

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

Dette tar den seg av

  • Elementet endrer størrelse fra størrelsen på skjermen til den naturlige størrelsen på det nye innholdet, så knapper hopper aldri.
  • Det gamle innholdet toner ut der det var, mens det nye toner inn; ingen av dem flyter om under byttet.
  • Å bytte tilbake midt i et bytte fortsetter fra det som er på skjermen i stedet for å stable kopier.
  • Barn som bare er tekst, er sin egen value; send value for alt annet.

Bruk den til

  • Lagre, så Lagrer …, så Lagret.
  • Et skjelett som blir et profilkort.
  • En avspillingsknapp som blir pause.

Props

PropTypeStandardBeskrivelse
valueunknownInnholdets identitet; en ny verdi bytter. Barn som bare er tekst, er sin egen identitet.
childrenReactNodeInnholdet.
aselement'span'Elementet som renderes.
inlinebooleanas === 'span'true tilpasser størrelsen til innholdet (etiketter, ikoner); false fyller forelderens bredde og animerer høyden.
align'start' | 'center' | 'end''center'Hvor innholdet sitter mens størrelsen endres.
effect'fade' | 'up' | 'down' | 'scale''fade'Hvordan innhold kommer inn og forlater: up stiger, down faller, scale vokser.
transitionTransitionspringEn timingkurve { duration, easing } eller en fjær { tempo: 'spring', spring }. Fjærer beholder momentet når de avbrytes.
onMotionComplete(value) => voidKjører når bevegelsen lander.

Andre props går til det renderte elementet, så className, style og hendelseshåndterere fungerer som vanlig.

Web og React Native

inline (standard når den renderes som span) animerer bredde og høyde; inline={false} fyller forelderens bredde og animerer høyden.

I React Native måler inline-bytter det nye innholdet på én linje; bruk inline={false} for innhold som brytes.

Brukt i disse eksemplene

Søk

Skriv for å søke i dokumentasjonen.