Melaksanakan tatal tak terhingga dalam tindak balas

Mary-Kate Olsen
Lepaskan: 2024-10-10 06:25:29
asal
1025 orang telah melayarinya

Implementing infinite scrolling in react

Sebelum kita memulakan pengekodan, jika anda ingin mengetahui lebih lanjut tentang apa itu penomboran dan mengapa kita memerlukannya, sila layari blog saya di sini.

Katakanlah ask adalah untuk memaparkan 50 item pada skrin dan apabila pengguna sampai ke bahagian bawah, muatkan 50 item seterusnya.
Untuk itu kita perlu menjejaki kedudukan tatal dan terus membandingkannya dengan badan dokumen offsetHeight.

Untuk mendapatkan kedudukan tatal, kami akan menggunakan window.scrollY.
Pada asasnya window.scrollY memberikan bilangan piksel halaman telah ditatal secara menegak dari atas. Ia memberitahu anda sejauh mana ke bawah halaman yang pengguna telah menatal.
Bersama-sama dengan window.scrollY, kami akan menggunakan dua lagi nilai untuk menyemak sama ada pengguna telah sampai di bahagian bawah halaman atau tidak.
window.innerHeight: Ini mewakili ketinggian bahagian tetingkap yang boleh dilihat (port pandang). Ia adalah ketinggian kawasan yang pengguna boleh lihat pada masa ini dalam penyemak imbas tanpa menatal.

document.body.offsetHeight: Ia memberikan jumlah ketinggian elemen badan.

Kod:

import { useState, useEffect } from "react";
import "./styles.css";
export default function App() {
  let query = [];
  let [items, setitems] = useState(50);
  for (let i = 1; i <= items; i++) {
    query.push(<p>{i}</p>);
  }

  useEffect(() => {
    const onScroll = () => {
      if (
        window.innerHeight + window.scrollY >=
        document.body.offsetHeight - 40
      ) {
        setitems(items + 50);
      }
    };

    window.addEventListener("scroll", onScroll);
    return () => window.removeEventListener("scroll", onScroll);
  }, [items]);

  return <div className="App">{query.map((q) => q)}</div>;
}
Salin selepas log masuk

Penjelasan: Paparan pertama halaman akan mencetuskan cangkuk useEffect yang akan menambah acara tatal. Setiap kali peristiwa menatal berlaku, kaedah onScroll() akan digunakan dan ia akan menyemak kedudukan skrol. Jika ia berada di bahagian bawah-40, maka lebih 50 item ditambahkan pada keadaan item.

Atas ialah kandungan terperinci Melaksanakan tatal tak terhingga dalam tindak balas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!