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 (

User List

setSearchTerm(e.target.value)} className="search-input" />
{currentUsers.map((user) => ( ))}
ID Name Email Phone Website Actions
{user.id} {user.name} {user.email} {user.phone} {user.website} View Edit
{Array.from({ length: totalPages }, (_, index) => ( ))}
Add New User
); }; export default UserList;