Alle componenten
MotionSwap
Inhoud die overvloeit terwijl de grootte meegaat.
WebReact NativeInhoud en grootte
Probeer het
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
| Prop | Type | Standaard | Beschrijving |
|---|
value | unknown | | Identiteit van de inhoud; een nieuwe waarde wisselt. Kinderen met alleen tekst zijn hun eigen identiteit. |
|---|
children | ReactNode | | De inhoud. |
|---|
as | element | 'span' | Het element dat wordt gerenderd. |
|---|
inline | boolean | as === '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. |
|---|
transition | Transition | spring | Een timingcurve { duration, easing } of een veer { tempo: 'spring', spring }. Veren behouden hun momentum als ze worden onderbroken. |
|---|
onMotionComplete | (value) => void | | Draait als de beweging tot rust komt. |
|---|
Andere props gaan naar het gerenderde element, dus className, style en event handlers werken zoals gewoonlijk.
Gebruikt in deze voorbeelden