Oppaat · 04

Syöte ja eleet

Kirjoita osoitin, vetäminen, vieritys ja muu syöte arvoihin ja anna muiden arvojen seurata niitä.

input(target, adapter)

Syötesovitin muuntaa selaintapahtumat arvojen kirjoituksiksi. input(ref, adapter) liittää sen ohjaimeksi; useAnimated-kutsun sisällä määriteltynä se poistetaan irrotettaessa tai riippuvuuden muuttuessa.

Sovittimet: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput ja swipeInput.

Valmistellaan esimerkkiä…

Vetäminen rajoilla ja irrottamisen jälkeisellä liikkeellä

dragInput tukee vetämistä osoittimella ja nuolinäppäimillä, bounds-rajoja elastic-vastuksella, momentum-liikettä irrottamisen jälkeen ja settle-funktiota, joka valitsee lepopaikan ennustetusta sijainnista.

Kosketusnäytöillä se asettaa kohteen touch-action-ominaisuuden kiinnityksen ajaksi, jotta selain ei tulkitse elettä vieritykseksi. Itse asettamasi arvo voittaa.

Valmistellaan esimerkkiä…

Nipistys, näkymä ja media

input-kutsun valinnainen kolmas argumentti saa jokaisen reaktiotapahtuman, joten sovitin voi myös käynnistää liikettä reunoillaan.

inputs.jsx
const card = useRef(null);

const pinch = useAnimated(
  { scale: 1, rotation: 0 },
  (value) => {
    input(card, pinchInput({ scale: value.scale, rotation: value.rotation, minScale: 0.5 }));
  },
  [],
);

const reveal = useAnimated(
  0,
  (value) => {
    input(card, viewportInput({ once: true }), (event) => {
      if (event.phase === 'in') spring(value, { toValue: 1 }).start();
    });
  },
  [],
);

Animated.event

React Nativen tapahtumakuvaukset toimivat DOM-tapahtumissa. Vieritystapahtumassa nativeEvent.contentOffset, contentSize ja layoutMeasurement luetaan vieritettävästä elementistä, joten ScrollView-kuvaukset siirtyvät muuttumattomina.

Header.jsx
const scrollY = useAnimatedValue(0);

<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;

Haku

Kirjoita hakeaksesi dokumentaatiosta.