Advertisement
asimryu

ViewStudent.js

Dec 21st, 2021
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, {useState, useEffect} from 'react';
  2. import {Link, useHistory} from 'react-router-dom';
  3. import axios from 'axios';
  4. import swal from 'sweetalert';
  5.  
  6. function ViewStudent() {
  7.  
  8.     const [loading, setLoading] = useState(true);
  9.     const [students, setStudents] = useState([]);
  10.  
  11.     useEffect(() => {
  12.  
  13.         axios.get(`http://localhost:8000/api/students`).then(res=>{
  14.             if(res.status === 200)
  15.             {
  16.                 setStudents(res.data.students)
  17.                 setLoading(false);
  18.             }
  19.         });
  20.  
  21.     }, []);
  22.  
  23.     const deleteStudent = (e, id) => {
  24.         e.preventDefault();
  25.        
  26.         const thisClicked = e.currentTarget;
  27.         thisClicked.innerText = "Deleting";
  28.  
  29.         axios.delete(`http://localhost:8000/api/delete-student/${id}`).then(res=>{
  30.             if(res.data.status === 200)
  31.             {
  32.                 swal("Deleted!",res.data.message,"success");
  33.                 thisClicked.closest("tr").remove();
  34.             }
  35.             else if(res.data.status === 404)
  36.             {
  37.                 swal("Error",res.data.message,"error");
  38.                 thisClicked.innerText = "Delete";
  39.             }
  40.         });
  41.     }
  42.  
  43.     if(loading)
  44.     {
  45.         return <h4>Loading Student Data...</h4>
  46.     }
  47.     else
  48.     {
  49.         var student_HTMLTABLE = "";
  50.        
  51.         student_HTMLTABLE = students.map( (item, index) => {
  52.             return (
  53.                 <tr key={index}>
  54.                     <td>{item.id}</td>
  55.                     <td>{item.name}</td>
  56.                     <td>{item.course}</td>
  57.                     <td>{item.email}</td>
  58.                     <td>{item.phone}</td>
  59.                     <td>
  60.                         <Link to={`edit-student/${item.id}`} className="btn btn-success btn-sm">Edit</Link>
  61.                     </td>
  62.                     <td>
  63.                         <button type="button" onClick={(e) => deleteStudent(e, item.id)} className="btn btn-danger btn-sm">Delete</button>
  64.                     </td>
  65.                 </tr>
  66.             );
  67.         });
  68.     }
  69.  
  70.     return (
  71.         <div>
  72.             <div className="container">
  73.                 <div className="row">
  74.                     <div className="col-md-12">
  75.                         <div className="card">
  76.                             <div className="card-header">
  77.                                 <h4>Students Data
  78.                                     <Link to={'add-student'} className="btn btn-primary btn-sm float-end"> Add Student</Link>
  79.                                 </h4>
  80.                             </div>
  81.                             <div className="card-body">
  82.                                
  83.                                 <table className="table table-bordered table-striped">
  84.                                     <thead>
  85.                                         <tr>
  86.                                             <th>ID</th>
  87.                                             <th>Name</th>
  88.                                             <th>Course</th>
  89.                                             <th>Email Id</th>
  90.                                             <th>Phone</th>
  91.                                             <th>Edit</th>
  92.                                             <th>Delete</th>
  93.                                         </tr>
  94.                                     </thead>
  95.                                     <tbody>
  96.                                         {student_HTMLTABLE}
  97.                                     </tbody>
  98.                                 </table>
  99.  
  100.                             </div>
  101.                         </div>
  102.                     </div>
  103.                 </div>
  104.             </div>
  105.         </div>
  106.     );
  107.  
  108. }
  109.  
  110. export default ViewStudent;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement