Alle komponenter
MotionSwap
Innhold som krysstones mens størrelsen følger etter.
WebReact NativeInnhold og størrelse
Prøv det
Korteste bruk
SaveButton.jsx<button onClick={save}>
<MotionSwap value={status} effect="up">
{status === 'saving' ? 'Saving…' : status === 'saved' ? 'Saved' : 'Save'}
</MotionSwap>
</button>;
Dette tar den seg av
- Elementet endrer størrelse fra størrelsen på skjermen til den naturlige størrelsen på det nye innholdet, så knapper hopper aldri.
- Det gamle innholdet toner ut der det var, mens det nye toner inn; ingen av dem flyter om under byttet.
- Å bytte tilbake midt i et bytte fortsetter fra det som er på skjermen i stedet for å stable kopier.
- Barn som bare er tekst, er sin egen
value; send value for alt annet.
Bruk den til
- Lagre, så Lagrer …, så Lagret.
- Et skjelett som blir et profilkort.
- En avspillingsknapp som blir pause.
Props
| Prop | Type | Standard | Beskrivelse |
|---|
value | unknown | | Innholdets identitet; en ny verdi bytter. Barn som bare er tekst, er sin egen identitet. |
|---|
children | ReactNode | | Innholdet. |
|---|
as | element | 'span' | Elementet som renderes. |
|---|
inline | boolean | as === 'span' | true tilpasser størrelsen til innholdet (etiketter, ikoner); false fyller forelderens bredde og animerer høyden. |
|---|
align | 'start' | 'center' | 'end' | 'center' | Hvor innholdet sitter mens størrelsen endres. |
|---|
effect | 'fade' | 'up' | 'down' | 'scale' | 'fade' | Hvordan innhold kommer inn og forlater: up stiger, down faller, scale vokser. |
|---|
transition | Transition | spring | En timingkurve { duration, easing } eller en fjær { tempo: 'spring', spring }. Fjærer beholder momentet når de avbrytes. |
|---|
onMotionComplete | (value) => void | | Kjører når bevegelsen lander. |
|---|
Andre props går til det renderte elementet, så className, style og hendelseshåndterere fungerer som vanlig.