Как можно реализовать функцию подгрузки дополнительного контента при прокрутке страницы в приложении на next.js?

  • 19 августа 2023 г. 6:56
Ответы на вопрос 1
Вы можете использовать библиотеку `react-infinite-scroll-component` для реализации функции подгрузки дополнительного контента при прокрутке страницы в приложении на Next.js. 

Вот пример кода, который показывает, как это можно сделать:

1. Установите библиотеку `react-infinite-scroll-component`:

```bash
npm install react-infinite-scroll-component
```

2. Создайте компонент InfiniteScroll.js:

```javascript
import React, { useEffect, useState } from 'react';
import InfiniteScroll from 'react-infinite-scroll-component';

const InfiniteScrollComponent = () => {
  const [data, setData] = useState([]);
  const [page, setPage] = useState(1);

  const fetchData = async () => {
    // Выполняйте запрос для получения данных для следующей страницы
    const response = await fetch(`/api/data?page=${page}`);
    const newData = await response.json();

    setData((prevData) => [...prevData, ...newData]);
    setPage((prevPage) => prevPage + 1);
  };

  useEffect(() => {
    fetchData();
  }, []);

  return (
    <InfiniteScroll
      dataLength={data.length}
      next={fetchData}
      hasMore={true}
      loader={<h4>Loading...</h4>}
    >
      {data.map((item, index) => (
        <div key={index}>{item}</div>
      ))}
    </InfiniteScroll>
  );
};

export default InfiniteScrollComponent;
```

3. Создайте API маршрут в Next.js, который будет обрабатывать запросы и возвращать данные:

```javascript
// pages/api/data.js
export default function handler(req, res) {
  const { page } = req.query;

  // Выполняйте необходимую логику для получения данных для запрашиваемой страницы
  const data = getDataForPage(page);

  res.status(200).json(data);
}
```

Теперь вы можете использовать компонент `InfiniteScrollComponent` в своем приложении, чтобы реализовать функцию подгрузки дополнительного контента при прокрутке страницы.
Похожие вопросы