React JS

How to add Pagination in Next Js

pages.js

import { useState, useEffect } from 'react';
import { fetchItems } from '../../utils/api';
import DashboardLayout from '../../components/DashboardLayout';

const ItemsPage = () => {
const [items, setItems] = useState([]);
const [page, setPage] = useState(1);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(null);

useEffect(() => {
const loadItems = async () => {
setIsLoading(true);
setError(null);
try {
const data = await fetchItems(page);
setItems(data.items); // Assuming the API returns an `items` array
} catch (error) {
setError(error.message);
} finally {
setIsLoading(false);
}
};

loadItems();
}, [page]);

const handleNextPage = () => setPage((prevPage) => prevPage + 1);
const handlePrevPage = () => setPage((prevPage) => Math.max(prevPage - 1, 1));

return (

Items List

{isLoading ? (

Loading...

) : error ? (

Error: {error}

) : (

    {items.map((item) => (

  • {item.name}
  • ))}

)}


Page {page}


);
};

export default ItemsPage;

Helper function for api

export async function fetchItems(page = 1) {
try {
const response = await fetch(`https://dummyjsonapi.com/items?page=${page}&limit=10`);
if (!response.ok) {
throw new Error('Failed to fetch items');
}
const data = await response.json();
return data;
} catch (error) {
console.error('Error fetching items:', error);
throw error;
}
}

Advertisement

Did you find this helpful? Share it!

Leave a Comment

Your email address will not be published. Required fields are marked