Kılavuzlar · 03

Animated bileşenleri

Bir hedefe ilerleyen, hareketlere yanıt veren ve zarifçe ayrılan sıradan öğeler render edin.

Animated.<tag>

Animated.div, Animated.button, Animated.svg ve diğer tüm HTML ya da SVG etiketleri sarmalayıcı olmadan sıradan bir öğe render eder. style'ları değer kabul eder ve transform'lar React Native'deki gibi dizi olabilir.

Bu öğelerdeki sonlu transform ve opacity hareketi, yaylar dahil, tarayıcı tarafından oynatılabilir.

Örnek hazırlanıyor…

seed, pose, poses ve tempo

seed ilk karedir, pose geçerli hedef (bir nesne ya da poses içindeki bir girdinin adı), tempo ise timing ya da yaydır. Yalnızca tempo'yu değiştirmek değişmemiş bir hedefi yeniden oynatmaz.

onRest öğe vardığında tetiklenir.

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')}
/>;

Hareketlere yanıt vermek

respond hareketleri geçici hedeflere eşler: hover, focus, focusWithin, press, longPress, drag, inView ve diğerleri. Yanıt bitince öğe nerede olursa olsun oradan kendi pose'una döner.

onResponse her yanıtın başını ve sonunu bildirir; respond={{ press: {} }} ise hiçbir görsel değişiklik olmadan bir hareketi izler.

Örnek hazırlanıyor…

Animated.Scope ile varsayılanları paylaşın

Animated.Scope içindeki Animated öğelere bir pose adı, tempo ve animasyon varsayılanları iletir.

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

Kendi bileşenleriniz

Animated.wrap(Component) — React Native'de createAnimatedComponent — ref ileten ve tek bir DOM öğesine çözümlenen bir bileşenin aynı props'u kabul etmesini sağlar.

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 }] } }} />;

Ara

Belgelerde aramak için yazın.