use-chanchal-laha
Version:
A custom React hook to manage student data via PHP REST API
3 lines (2 loc) • 1.35 kB
JavaScript
import{useState as e,useCallback as t,useEffect as r}from"react";import a from"axios";const n=({insertUrl:n,fetchUrl:s,updateUrl:o,deleteUrl:d})=>{const[p,c]=e([]),[i,m]=e(!1),l=t((async e=>{const t=new FormData;t.append("name",e.name),t.append("gender",e.gender),t.append("stream",e.stream),(e.subjects||[]).forEach((e=>t.append("sub[]",e))),e.simg&&e.simg[0]&&t.append("simg",e.simg[0]);try{return(await a.post(n,t)).data}catch(e){throw console.error("Insert Error:",e),e}}),[n]),u=t((async()=>{m(!0);try{const e=await a.get(s);c(e.data)}catch(e){console.error("Fetch Error:",e)}finally{m(!1)}}),[s]);r((()=>{s&&u()}),[s,u]);const g=t((async e=>{const t=new FormData;t.append("id",e.id),t.append("name",e.name||""),t.append("gender",e.gender||""),t.append("stream",e.stream||""),t.append("subject",(e.subjects||[]).join(", ")),e.simg&&e.simg[0]&&t.append("stdimg",e.simg[0]);try{return(await a.post(o,t,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(e){throw console.error("Update Error:",e),e}}),[o]),h=t((async e=>{try{return(await a.delete(d,{headers:{"Content-Type":"application/json"},data:JSON.stringify({id:e})})).data}catch(e){throw console.error("Delete Error:",e),e}}),[d]);return{insertStudent:l,fetchStudents:u,updateStudent:g,deleteStudent:h,students:p,loading:i}};export{n as default};
//# sourceMappingURL=index.esm.js.map