Bagaimana saya bisa memanggil acara scrollView gulir ke atas atau ke bawah di React Native? [tertutup]

Saya memiliki elemen scrollView dan saya ingin memanggil fungsi panggilan balik yang berbeda jika pengguna menggulir ke bawah atau ke atas


person Eugene Kannou    schedule 05.11.2020    source sumber


Jawaban (1)


Anda dapat menggunakan prop onScroll untuk mendapatkan notifikasi setiap kali pengguna men-scroll.

Untuk mencapai efek yang Anda inginkan, Anda hanya perlu menyimpan posisinya dan jika ada pembaruan, periksa apakah posisi y berubah dengan jumlah piksel positif (bawah) atau dengan jumlah piksel negatif (naik).

Sebagai komponen React yang fungsional, tampilannya akan seperti ini:


function MyComponent() {
  // we use a ref here in order to store the value between rendering without triggering an update (like useState would)
  const scrollYRef = useRef(0)
  return (
    <ScrollView 
      onScroll={(event) => {
          // 0 means the top of the screen, 100 would be scrolled 100px down
          const currentYPosition = event.nativeEvent.contentOffset.y
          const oldPosition = scrollYRef.current

          if(oldPosition < currentYPosition) {
              // we scrolled down
          } else {
              // we scrolled up
          }
          // save the current position for the next onScroll event
          scrollYRef.current = currentYPosition
      }}
      ....
    />
  )
}

person Maddis    schedule 05.11.2020