Alle komponenter

MotionSwap

Indhold, der krydstoner, mens størrelsen følger med.

WebReact NativeIndhold og størrelse

Prøv det

Forbereder eksemplet…

Korteste brug

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

Det klarer den for dig

  • Elementet ændrer størrelse fra sin størrelse på skærmen til det nye indholds naturlige størrelse, så knapper aldrig hopper.
  • Det gamle indhold toner ud, hvor det var, mens det nye toner ind; ingen af dem flyder om under skiftet.
  • At skifte tilbage midt i et skift fortsætter fra det, der er på skærmen, i stedet for at stable kopier.
  • Børn, der kun er tekst, er deres egen value; giv value for alt andet.

Brug den til

  • Gem, derefter Gemmer…, derefter Gemt.
  • Et skelet, der bliver til et profilkort.
  • En afspilknap, der bliver til pause.

Props

PropTypeStandardBeskrivelse
valueunknownIndholdets identitet; en ny værdi skifter. Børn, der kun er tekst, er deres egen identitet.
childrenReactNodeIndholdet.
aselement'span'Elementet, der renderes.
inlinebooleanas === 'span'true tilpasser størrelsen til indholdet (etiketter, ikoner); false fylder forælderens bredde og animerer højden.
align'start' | 'center' | 'end''center'Hvor indholdet sidder, mens størrelsen ændrer sig.
effect'fade' | 'up' | 'down' | 'scale''fade'Hvordan indhold kommer ind og forlader: up stiger, down falder, scale vokser.
transitionTransitionspringEn timingkurve { duration, easing } eller en fjeder { tempo: 'spring', spring }. Fjedre bevarer deres momentum, når de afbrydes.
onMotionComplete(value) => voidKører, når bevægelsen lander.

Andre props går til det renderede element, så className, style og event handlers virker som normalt.

Web og React Native

inline (standard, når den renderes som span) animerer bredde og højde; inline={false} fylder forælderens bredde og animerer højden.

I React Native måler inline-skift det nye indhold på én linje; brug inline={false} til indhold, der ombrydes.

Brugt i disse eksempler

Søg

Skriv for at søge i dokumentationen.