Vse komponente

MotionSwap

Vsebina, ki se prelije, medtem ko ji velikost sledi.

SpletReact NativeVsebina in velikost

Preizkusite

Pripravljanje primera …

Najkrajša uporaba

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

Kaj uredi namesto vas

  • Element spremeni velikost od tiste na zaslonu do naravne velikosti nove vsebine, zato gumbi nikoli ne poskočijo.
  • Stara vsebina zbledi tam, kjer je bila, nova pa se prikaže; nobena se med zamenjavo ne prerazporedi.
  • Vrnitev sredi zamenjave nadaljuje od tistega, kar je na zaslonu, namesto da bi kopičila kopije.
  • Otroci z navadnim besedilom so sami svoj value; za vse drugo podajte value.

Uporabite jo za

  • Shrani, nato Shranjevanje …, nato Shranjeno.
  • Okostje, ki postane kartica profila.
  • Gumb za predvajanje, ki postane premor.

Props

PropTipPrivzetoOpis
valueunknownIdentiteta vsebine; nova vrednost sproži zamenjavo. Otroci z navadnim besedilom so sami svoja identiteta.
childrenReactNodeVsebina.
aselement'span'Element za upodobitev.
inlinebooleanas === 'span'true prilagodi velikost vsebini (oznake, ikone); false zapolni širino starša in animira višino.
align'start' | 'center' | 'end''center'Kje je vsebina med spreminjanjem velikosti.
effect'fade' | 'up' | 'down' | 'scale''fade'Kako vsebina vstopi in odide: up se dvigne, down pade, scale zraste.
transitionTransitionspringKrivulja timinga { duration, easing } ali vzmet { tempo: 'spring', spring }. Vzmeti ob prekinitvi ohranijo zagon.
onMotionComplete(value) => voidSe izvede, ko se gibanje umiri.

Druge props gredo upodobljenemu elementu, zato className, style in obravnave dogodkov delujejo kot običajno.

Splet in React Native

inline (privzeto, ko se upodobi kot span) animira širino in višino; inline={false} zapolni širino starša in animira višino.

V React Nativu vrstične zamenjave izmerijo novo vsebino v eni vrstici; za vsebino, ki se prelamlja, uporabite inline={false}.

Uporabljeno v teh primerih

Iskanje

Tipkajte za iskanje po dokumentaciji.