Search in React js
import React, { useEffect, useState } from 'react';
import Loader from "../../components/Loader";
import { Link } from 'react-router-dom';
export default function UserList() {
const [data, setData] = useState([]);
const [search, setSearch] = useState("");
const [filterData, setFilterData] = useState([]);
useEffect(() => {
getData();
}, []);
const getData = async () => {
try {
const response = await fetch("https://jsonplaceholder.typicode.com/users");
const userData = await response.json();
setData(userData);
setFilterData(userData);
} catch (error) {
console.log(error.message);
}
}
useEffect(() => {
const user = data.filter((user) =>
user.name.toLowerCase().includes(search.toLowerCase()) ||
user.email.toLowerCase().includes(search.toLowerCase()) ||
user.phone.toLowerCase().includes(search.toLowerCase())
);
setFilterData(user)
}, [search, data])
return (
<>
{data.length > 0
?
<>
<section className="container mt-5">
<input type="text" className='form-control mb-3' onChange={(e) => setSearch(e.target.value)} placeholder='Find User...' />
<div className="card">
<div className="card-header">
<h5 className='text-center'>User List</h5>
</div>
<div className="card-body">
<table className='table'>
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Email</th>
<th>Contact</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{filterData.map((items) => (
<tr key={items.id}>
<td>{items.id}</td>
<td>{items.name}</td>
<td>{items.email}</td>
<td>{items.phone}</td>
<td>
<Link to={`/user/${items.id}`}>
<button className='btn btn-primary'>View</button>
</Link>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</section>
</>
:
<Loader />
}
</>
)
}
Comments
Post a Comment