import React, { useState, useEffect } from "react"; import { Link } from "react-router-dom"; import axios from "axios"; const UserList = ({ users, setUsers }) => { const [searchTerm, setSearchTerm] = useState(""); const [currentPage, setCurrentPage] = useState(1); const usersPerPage = 5; // Number of users to display per page useEffect(() => { if (users.length === 0) { axios .get("https://jsonplaceholder.typicode.com/users") .then((response) => setUsers(response.data)) .catch((error) => console.error("Error fetching users:", error)); } }, [users, setUsers]); const handleDelete = (id) => { setUsers(users.filter((user) => user.id !== id)); alert(`User with ID ${id} deleted.`); }; const filteredUsers = users.filter( (user) => user.name.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase()) ); // Calculate pagination details const indexOfLastUser = currentPage * usersPerPage; const indexOfFirstUser = indexOfLastUser - usersPerPage; const currentUsers = filteredUsers.slice(indexOfFirstUser, indexOfLastUser); const totalPages = Math.ceil(filteredUsers.length / usersPerPage); const handlePageChange = (pageNumber) => { setCurrentPage(pageNumber); }; return (
ID | Name | Phone | Website | Actions | |
---|---|---|---|---|---|
{user.id} | {user.name} | {user.email} | {user.phone} | {user.website} | View Edit |