Advertisement
Guest User

Help with useEffect

a guest
Mar 23rd, 2022
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. function HeaderSection() {
  3.  
  4.   let baseUrl = "https://swapi.dev/api/people";
  5.   const [data, setData] = useState([]);
  6.   const [currentStatus , setStatus] = useState(false);
  7.  
  8.   let urlToggle = false;
  9.  
  10.   function urlChange(){
  11.     urlToggle = !urlToggle;
  12.     if(urlToggle)
  13.     {
  14.       baseUrl = "https://swapi.dev/api/people";
  15.     }
  16.     else
  17.     {
  18.       baseUrl = "https://pokeapi.co/api/v2/berry";
  19.     }
  20.   }
  21.  
  22.  
  23.  
  24.   useEffect(()=>{
  25.     fetch(baseUrl)
  26.     .then((response) =>{
  27.       if(!response.ok)
  28.       {
  29.         return Promise.reject( new Error("Response Error!"));
  30.       }
  31.       else
  32.       {
  33.         return response.json();
  34.       }
  35.     })
  36.     .catch ( (err) =>{
  37.       console.log(err);
  38.     })
  39.     .then((json) => {
  40.       try{
  41.         setData(json.results);
  42.         setStatus(true);
  43.       }
  44.       catch
  45.       {
  46.         return Promise.reject(new Error(`State Error!: Data: ${data} , Connection:${currentStatus}`));
  47.       }
  48.     })
  49.     .catch((err) =>{
  50.       console.log(err);
  51.     })  
  52.   },[baseUrl]);
  53.  
  54.   return (
  55.     <div className='gio-main'>
  56.      
  57.       <div className='gio-container-3'>
  58.        <h1>API Switch</h1>
  59.        <h4>Endpoint request using vanilla JS displayed in custom table</h4>
  60.        <p>You can switch between endpoints using this button!</p>
  61.        <button onClick={urlChange}>Change API</button>
  62.        {!currentStatus ?  <h2>Loading... </h2> : <Table data={data}/>}
  63.       </div>
  64.     </div>
  65.   );
  66. }
  67.  
  68. export default HeaderSection;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement