Mengintegrasikan konten dinamis dari platform seperti Medium ke situs web Anda dapat memperkaya pengalaman pengguna Anda dengan menyediakan artikel segar dan menarik. Dalam tutorial ini, saya akan memandu Anda melalui proses pengambilan data Medium API dan merendernya menggunakan komponen React sambil memastikan presentasi yang menarik secara visual.

Begini tampilan website saya dengan artikel medium.

Menyiapkan Komponen Artikel

Pertama, mari buat komponen React yang mengambil dan menampilkan artikel Medium. Di proyek React Anda, siapkan komponen Articles:

import { useState, useEffect } from "react";
import ArticleItems from "./ArticleItems";

const mediumArticle =
  "https://api.rss2json.com/v1/api.json?rss_url=https://medium.com/feed/@yourusername";

const Articles = () => {
  const [articles, setArticles] = useState([]);

  useEffect(() => {
    fetch(mediumArticle)
      .then((res) => res.json())
      .then((data) => setArticles(data.items));
  }, []);

  return (
    <div className="article__container container grid">
      {articles.map((article, index) => {
        return <ArticleItems key={index} article={article} index={index} />;
      })}
    </div>
  );
};

export default Articles;

Inilah yang dikembalikan oleh API medium.

Meningkatkan Tampilan Artikel

Sekarang mari kita fokus pada peningkatan daya tarik visual dari setiap artikel yang diambil. Saya akan menyempurnakan format tanggal dari “2023–08–22 06:13:56” menjadi “22 Agustus 2023” yang lebih mudah dibaca. Selain itu, penting juga untuk mengetahui bahwa deskripsi terdiri dari tag HTML, yang perlu diuraikan oleh Regex.

// Function to format a given date string
function formatDate(inputText) {
  const inputDate = new Date(inputText);
  const options = {
    year: "numeric",
    month: "short",
    day: "numeric",
  };
  return inputDate.toLocaleDateString(undefined, options);
}

// Function to extract content from HTML string using regex patterns
function extractContent(htmlString) {
  // Define regex patterns to match <h4> and <p> tags
  const h4Pattern = /<h4>(.*?)<\/h4>/s;
  const pPattern = /<p>(.*?)<\/p>/s;

  // Attempt to match patterns in the HTML string
  const h4Match = htmlString.match(h4Pattern);
  const pMatch = htmlString.match(pPattern);

  // If both <h4> and <p> tags are found, combine their content
  if (h4Match && pMatch) {
    const h4Content = h4Match[1];
    const pContent = pMatch[1];
    return `${h4Content} - ${pContent}`;
  } else if (pMatch) {
    // If only a <p> tag is found, use its content
    const pContent = pMatch[1];
    return pContent;
  }
  // Return null if no suitable content is found
  return null;
}

// Component to render article items
function ArticleItems({ article, index }) {
  // Extract content and format date for rendering
  const content = extractContent(article.description);
  const formattedDate = formatDate(article.pubDate);

  return (
    <div className="article__card" key={index}>
      <img
        className="article__img"
        src={article.thumbnail}
        alt={article.title}
      />
      <div className="article__body">
        <div className="article__header">
          <h3 className="article__title">{article.title}</h3>
          <p className="article__description">{content}</p>
        </div>
        <div className="article__details">
          <p className="article__date">{formattedDate}</p>
          <a href={article.link} target="_blank" className="article__button">
            Read more{" "}
            <i className="bx bx-right-arrow-alt article__button-icon"></i>
          </a>
        </div>
      </div>
    </div>
  );
}

export default ArticleItems;

Styling untuk Presentasi yang Rapi

Untuk membuat tata letak artikel Medium Anda yang menarik secara visual, terapkan gaya CSS untuk memotong deskripsi artikel setelah tiga baris:

/* Apply this CSS method to truncate article descriptions */
.article__description {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

Penyelesaian

Mengambil dan menampilkan artikel Medium di situs web React Anda dapat berfungsi dan menarik secara visual. Anda dapat menyesuaikannya lebih lanjut agar sesuai dengan desain dan persyaratan situs web Anda.

Terima kasih telah membaca sampai akhir. Harap pertimbangkan untuk mengikuti penulis dan publikasi ini. Kunjungi Stackademic untuk mengetahui lebih lanjut tentang bagaimana kami mendemokratisasi pendidikan pemrograman gratis di seluruh dunia.