هوکها
توابع
کامپوننتهای مرتبه بالا
useInfiniteScroll
این هوک راهی آسان برای پیادهسازی اسکرول بینهایت در کامپوننتهای React فراهم میکند.
مثال
import useInfiniteScroll from '@/utils/hooks/useInfiniteScroll';
const InfiniteScrollComponent = () => {
const [items, setItems] = useState([...Array(20).keys()]);
const loadMoreItems = async () => {
await new Promise((resolve) => setTimeout(resolve, 1000));
setItems((prevItems) => [...prevItems, ...Array(20).keys()]);
};
const { isLoading, containerRef } = useInfiniteScroll({
onLoadMore: loadMoreItems,
});
return (
<div ref={containerRef} style={{ height: '300px', overflowY: 'auto' }}>
{items.map((item, index) => (
<div key={index} style={{ padding: '10px', border: '1px solid #ddd' }}>
Item {index + 1}
</div>
))}
{isLoading && <p>Loading more items...</p>}
</div>
);
};
export default InfiniteScrollComponent;
پارامترها
| param | توضیحات | نوع | پیشفرض |
|---|---|---|---|
| offset | فاصله از پایین کانتینر که در آن عملیات بارگذاری بیشتر باید فعال شود. | string | '0px' |
| shouldStop | پرچم برای توقف اسکرول بینهایت از فعال کردن عملیاتهای بارگذاری بیشتر. | boolean | false |
| onLoadMore | تابعی که هنگام رسیدن کاربر به انتهای کانتینر فراخوانی میشود. | () => Promise | undefined |
مقدار بازگشتی
| بازگشتی | توضیحات | نوع | پیشفرض |
|---|---|---|---|
| isLoading | نشان میدهد که آیا هوک در حال بارگذاری محتوای بیشتر است یا خیر. | boolean | |
| containerRef | یک تابع callback ref که باید به کانتینری که نیاز به اسکرول بینهایت دارد اختصاص داده شود. | LegacyRef |