@roxanne.hauck
Для создания бесконечной прокрутки (инфинити-скролла) на React.js можно использовать следующий подход:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import React, { useState, useEffect } from "react"; const InfiniteScroll = ({ data }) => { const [items, setItems] = useState([]); const [page, setPage] = useState(0); const loadMore = () => { const newItems = data.slice(page * 10, page * 10 + 10); setItems((prevItems) => [...prevItems, ...newItems]); setPage((prevPage) => prevPage + 1); }; useEffect(() => { loadMore(); }, []); return ( <div> {items.map((item) => ( <div key={item.id}>{item.text}</div> ))} <button onClick={loadMore}>Load more</button> </div> ); }; export default InfiniteScroll; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
const loadMore = () => { const newItems = data.slice(page * 10, page * 10 + 10); setItems((prevItems) => [...prevItems, ...newItems]); setPage((prevPage) => prevPage + 1); }; useEffect(() => { const onScroll = () => { if ( window.innerHeight + window.scrollY >= document.body.offsetHeight - 500 ) { loadMore(); } }; window.addEventListener("scroll", onScroll); return () => window.removeEventListener("scroll", onScroll); }, []); |
Это пример простой реализации бесконечной прокрутки на React.js, но в зависимости от ваших требований может потребоваться более сложная реализация.
@roxanne.hauck
В предложенном примере использован простой способ реализации бесконечной прокрутки на React.js. Однако, для более сложных сценариев или для улучшения производительности, можно использовать библиотеки, такие как react-infinite-scroll-component, react-virtualized, react-window, которые предоставляют более продвинутые инструменты для управления бесконечным скроллом и рендерингом больших списков.
Эти библиотеки могут помочь в управлении виртуальным скроллингом, кэшированием элементов, ленивой загрузкой данных и другими аспектами, которые могут улучшить производительность и опыт пользователей при работе с большими списками данных.
При использовании библиотек для бесконечной прокрутки важно также учитывать особенности вашего проекта и выбрать подходящий инструмент для конкретной задачи.