Alla komponenter
MotionSwap
Innehåll som övertonas medan storleken följer med.
WebbReact NativeInnehåll och storlek
Prova
Kortaste användning
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Det här sköter den åt dig
- Elementet ändrar storlek från sin storlek på skärmen till det nya innehållets naturliga storlek, så knappar hoppar aldrig.
- Det gamla innehållet tonar ut där det var medan det nya tonar in; inget av dem flödar om under bytet.
- Att byta tillbaka mitt i ett byte fortsätter från det som syns på skärmen i stället för att stapla kopior.
- Barn som bara är text är sitt eget
value; skicka value för allt annat.
Använd den för
- Spara, sedan Sparar…, sedan Sparat.
- Ett skelett som blir ett profilkort.
- En spelaknapp som blir paus.
Props
| Prop | Typ | Standard | Beskrivning |
|---|
value | unknown | | Innehållets identitet; ett nytt värde byter. Barn som bara är text är sin egen identitet. |
|---|
children | ReactNode | | Innehållet. |
|---|
as | element | 'span' | Elementet som renderas. |
|---|
inline | boolean | as === 'span' | true anpassar storleken efter innehållet (etiketter, ikoner); false fyller förälderns bredd och animerar höjden. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Var innehållet sitter medan storleken ändras. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Hur innehåll kommer in och lämnar: up stiger, down faller, scale växer. |
|---|
transition | Transition | spring | En timingkurva { duration, easing } eller en fjäder { tempo: 'spring', spring }. Fjädrar behåller sitt momentum när de avbryts. |
|---|
onMotionComplete | (value) => void | | Körs när rörelsen landar. |
|---|
Andra props går till det renderade elementet, så className, style och händelsehanterare fungerar som vanligt.
Används i de här exemplen