Visi komponentai

MotionSwap

Turinys, kuris persilieja, kol dydis seka.

ŽiniatinklisReact NativeTurinys ir dydis

Išbandykite

Ruošiamas pavyzdys…

Trumpiausias naudojimas

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

Ką jis sutvarko už jus

  • Elementas keičia dydį nuo dydžio ekrane iki natūralaus naujo turinio dydžio, todėl mygtukai niekada nepašoka.
  • Senas turinys išblunka vietoje, kol naujas išryškėja; nė vienas keitimo metu neperdėliojamas.
  • Grįžimas keitimo viduryje tęsiasi nuo to, kas yra ekrane, užuot kaupęs kopijas.
  • Paprasto teksto vaikai patys yra savo value; visam kitam perduokite value.

Naudokite jį

  • Išsaugoti, tada Saugoma…, tada Išsaugota.
  • Griaučiai, kurie tampa profilio kortele.
  • Grojimo mygtukas, kuris tampa pauze.

Props

PropTipasNumatytojiAprašymas
valueunknownTurinio tapatybė; nauja reikšmė sukelia pakeitimą. Paprasto teksto vaikai patys yra savo tapatybė.
childrenReactNodeTurinys.
aselement'span'Atvaizduojamas elementas.
inlinebooleanas === 'span'true pritaiko dydį turiniui (etiketės, piktogramos); false užpildo tėvinio elemento plotį ir animuoja aukštį.
align'start' | 'center' | 'end''center'Kur yra turinys, kol keičiasi dydis.
effect'fade' | 'up' | 'down' | 'scale''fade'Kaip turinys įeina ir išeina: up kyla, down krenta, scale didėja.
transitionTransitionspringTiming kreivė { duration, easing } arba spyruoklė { tempo: 'spring', spring }. Pertrauktos spyruoklės išlaiko inerciją.
onMotionComplete(value) => voidVykdomas, kai judesys nusistovi.

Kiti props perduodami atvaizduojamam elementui, todėl className, style ir įvykių apdorojimo funkcijos veikia kaip įprastai.

Žiniatinklis ir React Native

inline (numatytasis, kai atvaizduojama kaip span) animuoja plotį ir aukštį; inline={false} užpildo tėvinio elemento plotį ir animuoja aukštį.

React Native eilutiniai keitimai išmatuoja naują turinį vienoje eilutėje; eilutes keliančiam turiniui naudokite inline={false}.

Naudojama šiuose pavyzdžiuose

Paieška

Rašykite, kad ieškotumėte dokumentacijoje.