Alle Komponenten

MotionSwap

Inhalt, der überblendet, während seine Größe mitgeht.

WebReact NativeInhalt und Größe

Ausprobieren

Beispiel wird vorbereitet…

Kürzeste Nutzung

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

Was sie dir abnimmt

  • Das Element ändert seine Größe von der Größe auf dem Bildschirm zur natürlichen Größe des neuen Inhalts, sodass Buttons nie springen.
  • Der alte Inhalt blendet dort aus, wo er war, während der neue einblendet; keiner von beiden fließt während des Wechsels neu um.
  • Mitten im Wechsel zurückzuwechseln setzt bei dem an, was auf dem Bildschirm ist, statt Kopien zu stapeln.
  • Reine Text-Kinder sind ihr eigener value; für alles andere übergibst du value.

Gut für

  • Speichern, dann Speichert…, dann Gespeichert.
  • Ein Skeleton, das zur Profilkarte wird.
  • Ein Play-Button, der zu Pause wird.

props

PropTypStandardBeschreibung
valueunknownIdentität des Inhalts; ein neuer Wert löst den Wechsel aus. Reine Text-Kinder sind ihre eigene Identität.
childrenReactNodeDer Inhalt.
aselement'span'Das zu rendernde Element.
inlinebooleanas === 'span'true passt die Größe an den Inhalt an (Labels, Icons); false füllt die Breite des Elternelements und animiert die Höhe.
align'start' | 'center' | 'end''center'Wo der Inhalt sitzt, während sich die Größe ändert.
effect'fade' | 'up' | 'down' | 'scale''fade'Wie Inhalt kommt und geht: up steigt, down fällt, scale wächst.
transitionTransitionspringEine Timing-Kurve { duration, easing } oder eine Feder { tempo: 'spring', spring }. Federn behalten bei Unterbrechung ihren Schwung.
onMotionComplete(value) => voidLäuft, wenn die Bewegung zur Ruhe kommt.

Weitere props gehen an das gerenderte Element, also funktionieren className, style und Event-Handler wie gewohnt.

Web und React Native

inline (Standard beim Rendern als span) animiert Breite und Höhe; inline={false} füllt die Breite des Elternelements und animiert die Höhe.

Unter React Native messen Inline-Wechsel den neuen Inhalt auf einer Zeile; nutze inline={false} für Inhalt, der umbricht.

Verwendet in diesen Beispielen

Suchen

Tippe, um die Dokumentation zu durchsuchen.