Advertisement
raphaelaleixo

Untitled

Mar 22nd, 2023
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useEffect, useState, useMemo } from "react";
  2. import "../App.css";
  3.  
  4. import Header from "../components/Header";
  5. import Footer from "../components/Footer";
  6.  
  7. const CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  8. const ALL = "all";
  9. const characterArray = CHARS.split();
  10. characterArray.unshift(ALL);
  11.  
  12. function Directory() {
  13.   const [apiResult, setApiResult] = useState([]);
  14.   const [selectedCharacter, setSelectedCharacter] = useState(ALL);
  15.  
  16.   useEffect(() => {
  17.     document.title = "Subdomains Directory | Free subdomains | Hej";
  18.     getDomains();
  19.   }, []);
  20.  
  21.   const filteredResults = useMemo(() => {
  22.     const names = [];
  23.     for (let x = 0; x < apiResult.length; x++) {
  24.       names.push(apiResult[x].subdomain);
  25.     }
  26.     const filtered = names.filter((name) =>
  27.       name.toLowerCase().includes(selectedCharacter.toLowerCase())
  28.     );
  29.     return filtered;
  30.   }, [apiResult, selectedCharacter]);
  31.  
  32.   const getDomains = async () => {
  33.     try {
  34.       await fetch("http://localhost:3001/allDomains")
  35.         .then((response) => response.json())
  36.         .then((response) => {
  37.           setApiResult(response);
  38.         });
  39.     } catch (err) {
  40.       console.error(err);
  41.     }
  42.   };
  43.  
  44.   return (
  45.     <>
  46.       <Header />
  47.       <section id="faq" className="section">
  48.         <div className="container">
  49.           <div className="row">
  50.             <div className="col-lg-6 col-md-12 offset-lg-3 title-section">
  51.               <h2 className="text-heading section-heading">
  52.                 Subdomains Directory
  53.               </h2>
  54.             </div>
  55.             <div>
  56.               <ul className="tags">
  57.                 {characterArray.map((character) => (
  58.                   <li key={character}>
  59.                     <button
  60.                       onClick={(e) => setSelectedCharacter(character)}
  61.                       className="tag"
  62.                       to="#"
  63.                     >
  64.                       {character}
  65.                     </button>
  66.                   </li>
  67.                 ))}
  68.               </ul>
  69.               <br />
  70.               <br />
  71.               {filteredResults.length > 0 ? (
  72.                 <ul>
  73.                   {filteredResults.map((item, i) => {
  74.                     console.log("item: " + item);
  75.                     console.log("iterator for key: " + i);
  76.                     return <li key={i}>{item}</li>;
  77.                   })}
  78.                 </ul>
  79.               ) : (
  80.                 <div class="alert alert-danger" role="alert">
  81.                   There are no subdomains starting with T.
  82.                 </div>
  83.               )}
  84.             </div>
  85.           </div>
  86.         </div>
  87.       </section>
  88.       <Footer />
  89.     </>
  90.   );
  91. }
  92.  
  93. export default Directory;
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement