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;
}
}