Alle componenten

MotionSwap

Inhoud die overvloeit terwijl de grootte meegaat.

WebReact NativeInhoud en grootte

Probeer het

Voorbeeld voorbereiden…

Kortste gebruik

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

Wat het voor je regelt

  • Het element verandert van zijn grootte op het scherm naar de natuurlijke grootte van de nieuwe inhoud, dus knoppen springen nooit.
  • De oude inhoud vervaagt waar hij stond terwijl de nieuwe infadet; geen van beide herschikt tijdens de wissel.
  • Midden in een wissel terugwisselen gaat verder vanaf wat op het scherm staat in plaats van kopieën te stapelen.
  • Kinderen met alleen tekst zijn hun eigen value; geef value mee voor al het andere.

Gebruik het voor

  • Opslaan, dan Opslaan…, dan Opgeslagen.
  • Een skelet dat een profielkaart wordt.
  • Een afspeelknop die pauze wordt.

Props

PropTypeStandaardBeschrijving
valueunknownIdentiteit van de inhoud; een nieuwe waarde wisselt. Kinderen met alleen tekst zijn hun eigen identiteit.
childrenReactNodeDe inhoud.
aselement'span'Het element dat wordt gerenderd.
inlinebooleanas === 'span'true past de grootte aan de inhoud aan (labels, iconen); false vult de breedte van de ouder en animeert de hoogte.
align'start' | 'center' | 'end''center'Waar de inhoud staat terwijl de grootte verandert.
effect'fade' | 'up' | 'down' | 'scale''fade'Hoe inhoud binnenkomt en vertrekt: up stijgt, down daalt, scale groeit.
transitionTransitionspringEen timingcurve { duration, easing } of een veer { tempo: 'spring', spring }. Veren behouden hun momentum als ze worden onderbroken.
onMotionComplete(value) => voidDraait als de beweging tot rust komt.

Andere props gaan naar het gerenderde element, dus className, style en event handlers werken zoals gewoonlijk.

Web en React Native

inline (standaard bij renderen als span) animeert breedte en hoogte; inline={false} vult de breedte van de ouder en animeert de hoogte.

In React Native meten inline-wissels de nieuwe inhoud op één regel; gebruik inline={false} voor inhoud die doorloopt.

Gebruikt in deze voorbeelden

Zoeken

Typ om de documentatie te doorzoeken.