reactjs – How to add reverse-scroll in React while using react-virtualized with InfiniteLoader for loading messages?

You can do something like this, you can replace items by chat in your application. Let me know if you have more questions

import { useEffect, useRef, useCallback, useState } from "react"

const InfiniteScrollComponent = () => {
  const [items, setItems] = useState([])
  const [page, setPage] = useState(1) // Page state to handle pagination
  const loaderRef = useRef(null)

  // Function to load more items
  const loadMore = async () => {
    try {
      const response = await fetch(
        `https://dummyjson.com/products?limit=10&skip=${(page - 1) * 10}`
      )
      const data = await response.json()
      setItems((prevItems) => [...prevItems, ...data.products])
      setPage((prevPage) => prevPage + 1)
    } catch (error) {
      console.error("Error fetching data:", error)
    }
  }

  const observerCallback = useCallback(
    (entries) => {
      const target = entries[0]
      if (target.isIntersecting) {
        loadMore()
      }
    },
    [page]
  )

  useEffect(() => {
    const observer = new IntersectionObserver(observerCallback, {
      root: null,
      rootMargin: "500px",
      threshold: 0.1,
    })

    if (loaderRef.current) {
      observer.observe(loaderRef.current)
    }

    return () => {
      if (loaderRef.current) {
        observer.unobserve(loaderRef.current)
      }
    }
  }, [observerCallback])

  return (
    
{items.map((item, index) => (

{item.title}

{item.description}

))}
) } export default InfiniteScrollComponent

Read more here: Source link