Guider · 03

Animated-komponenter

Render vanlige elementer som beveger seg mot et mål, svarer på bevegelser og forlater elegant.

Animated.<tag>

Animated.div, Animated.button, Animated.svg og alle andre HTML- eller SVG-tagger renderer det vanlige elementet uten omslag. style tar verdier, og transforms kan være arrays som i React Native.

Endelig transform- og opacity-bevegelse på disse elementene, fjærer inkludert, kan spilles av nettleseren.

Forbereder eksempelet …

seed, pose, poses og tempo

seed er det første bildet, pose det gjeldende målet (et objekt eller navnet på en oppføring i poses), og tempo en timing eller fjær. Å endre bare tempo spiller ikke av et uendret mål på nytt.

onRest kalles når elementet kommer frem.

Card.jsx
<Animated.article
  seed={{ opacity: 0, transform: [{ translateY: 16 }] }}
  pose={selected ? 'raised' : 'rest'}
  poses={{
    rest: { opacity: 1, transform: [{ translateY: 0 }, { scale: 1 }] },
    raised: { opacity: 1, transform: [{ translateY: -8 }, { scale: 1.04 }] },
  }}
  tempo={{ spring: { stiffness: 300, damping: 26 } }}
  onRest={() => console.log('arrived')}
/>;

Svar på bevegelser

respond kobler bevegelser til midlertidige mål: hover, focus, focusWithin, press, longPress, drag, inView og flere. Når et svar slutter, går elementet tilbake til posen sin fra der det er.

onResponse melder start og slutt på hvert svar, og respond={{ press: {} }} observerer en bevegelse uten å endre noe visuelt.

Forbereder eksempelet …

Del standarder med Animated.Scope

Animated.Scope sender et pose-navn, tempo og animasjonsstandarder til Animated-elementene inni.

Menu.jsx
<Animated.Scope tempo={{ spring: { stiffness: 380, damping: 30 } }}>
  <Animated.li pose={{ opacity: 1 }} />
  <Animated.li pose={{ opacity: 1 }} />
</Animated.Scope>;

Dine egne komponenter

Animated.wrap(Component) — createAnimatedComponent i React Native — lar en komponent som videresender ref og tilsvarer ett DOM-element, ta de samme props.

Link.jsx
import { forwardRef } from 'react';
import { Animated } from '@kkwaenggwari/animated';

const Link = forwardRef((props, ref) => <a ref={ref} {...props} />);
const AnimatedLink = Animated.wrap(Link);

<AnimatedLink href="/pricing" respond={{ hover: { transform: [{ translateX: 4 }] } }} />;

Søk

Skriv for å søke i dokumentasjonen.