Alla komponenter

MotionSwap

Innehåll som övertonas medan storleken följer med.

WebbReact NativeInnehåll och storlek

Prova

Förbereder exemplet…

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

PropTypStandardBeskrivning
valueunknownInnehållets identitet; ett nytt värde byter. Barn som bara är text är sin egen identitet.
childrenReactNodeInnehållet.
aselement'span'Elementet som renderas.
inlinebooleanas === '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.
transitionTransitionspringEn timingkurva { duration, easing } eller en fjäder { tempo: 'spring', spring }. Fjädrar behåller sitt momentum när de avbryts.
onMotionComplete(value) => voidKörs när rörelsen landar.

Andra props går till det renderade elementet, så className, style och händelsehanterare fungerar som vanligt.

Webb och React Native

inline (standard när den renderas som span) animerar bredd och höjd; inline={false} fyller förälderns bredd och animerar höjden.

I React Native mäter inline-byten det nya innehållet på en rad; använd inline={false} för innehåll som radbryts.

Används i de här exemplen

Sök

Skriv för att söka i dokumentationen.