import React, { useState, useEffect, useCallback } from 'react';
import axios from 'axios';
import { useSelector } from 'react-redux';
import { useTonWallet, useTonConnectModal } from 'your-ton-wallet-hooks';
import ProductCard from './ProductCard'; // Предположим, что это компонент карточки продукта
import styles from './Homepage.module.css'; // Предположим, что у вас есть CSS-модули
function Homepage() {
const [slide, setSlide] = useState(0);
const wallet = useTonWallet();
const { open } = useTonConnectModal();
const productsList = useSelector((state) => state.products.productsList);
const [products, setProducts] = useState([]);
const [loading, setLoading] = useState(false);
const [displayedProducts, setDisplayedProducts] = useState([]);
const [displayCount, setDisplayCount] = useState(6);
useEffect(() => {
fetchProducts();
}, []);
const fetchProducts = async () => {
try {
const response = await axios.post('путь');
setProducts(response.data);
setDisplayedProducts(response.data.slice(0, displayCount));
} catch (error) {
console.error('Error fetching products:', error);
}
};
const handleScroll = useCallback(() => {
const scrollHeight = document.body.scrollHeight;
const scrollTop = document.documentElement.scrollTop;
const clientHeight = document.documentElement.clientHeight;
if (scrollTop + clientHeight >= scrollHeight - 5) {
setLoading(true);
setTimeout(() => {
const newDisplayCount = displayCount + 2;
setDisplayCount(newDisplayCount);
setDisplayedProducts(products.slice(0, newDisplayCount));
setLoading(false);
}, 1000);
}
}, [displayCount, products]);
useEffect(() => {
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, [handleScroll]);
return (
{displayedProducts.map((product, index) => (
))}
{loading &&
Loading...
}
);
}
export default Homepage;