「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Gatsby でのデータ表示

Gatsby でのデータ表示

2024 年 11 月 1 日に公開
ブラウズ:810

Data Display in Gatsby

Gatsby は、開発者が高速でスケーラブルな Web サイトやアプリケーションを構築できるようにする、React ベースの強力な静的サイト ジェネレーターです。効果的な Web サイトを構築するための重要な側面の 1 つは、データをユーザーに効率的に表示することです。 Gatsby では、GraphQL、React コンポーネント、およびヘッドレス CMS、API、ローカル ファイルなどのサードパーティ データ ソースの組み合わせを使用してデータ表示を実現できます。

この記事では、データを効果的にレンダリングするための主要な原則、戦略、ベスト プラクティスに焦点を当てながら、Gatsby アプリケーションでデータを取得して表示するプロセスについて説明します。

1. ギャツビーのデータ層を理解する

Gatsby のデータ レイヤーは GraphQL を中心に構築されており、開発者が必要なデータを正確にリクエストできるようにするクエリ言語として機能します。 Gatsby は GraphQL と深く統合されているため、Markdown ファイル、JSON ファイル、外部 API などのさまざまなソースからデータを簡単に取得して、React コンポーネント内に表示できます。

Gatsby でデータを表示する手順は通常次のとおりです:

  • 外部または内部ソースからのデータの取得
  • GraphQL クエリを使用したデータの構造化
  • React コンポーネントを使用したデータの表示

2. Gatsby での GraphQL クエリの設定

Gatsby には、データ ソースに簡単にアクセスできる GraphQL レイヤーが組み込まれています。 GraphQL クエリを使用して、

からデータを抽出できます。
  • Markdown や JSON などのローカル ファイル
  • Contentful、Strapi、WordPress などの CMS プラットフォーム
  • API とデータベース

例 1: マークダウン データのクエリ

ブログを構築していて、投稿を Markdown ファイルで作成したとします。 Gatsby の gatsby-transformer-remark プラグインを使用して Markdown ファイルをクエリし、React コンポーネントにコンテンツを表示できます。

export const query = graphql`
  query BlogPostQuery {
    allMarkdownRemark {
      edges {
        node {
          frontmatter {
            title
            date
          }
          excerpt
        }
      }
    }
  }
`

その後、JSX を使用してコンポーネント内で取得したブログ投稿をレンダリングできます:

const Blog = ({ data }) => (
  
{data.allMarkdownRemark.edges.map(({ node }) => (

{node.frontmatter.title}

{node.excerpt}

{node.frontmatter.date}
))}
)

例 2: CMS からのデータのクエリ (コンテンツフル)

Contentful のようなヘッドレス CMS を使用している場合は、Gatsby を Contentful の API と統合する gatsby-source-contentful プラグインをインストールすることでデータをクエリできます。 Contentful からブログ投稿を取得する例を次に示します:

export const query = graphql`
  query ContentfulBlogPostQuery {
    allContentfulBlogPost {
      edges {
        node {
          title
          publishedDate(formatString: "MMMM Do, YYYY")
          body {
            childMarkdownRemark {
              excerpt
            }
          }
        }
      }
    }
  }
`

Markdown の場合と同様にデータをレンダリングできるようになりました:

const Blog = ({ data }) => (
  
{data.allContentfulBlogPost.edges.map(({ node }) => (

{node.title}

{node.body.childMarkdownRemark.excerpt}

{node.publishedDate}
))}
)

3. API を介した外部データのレンダリング

Gatsby の静的データ ソース (Markdown、CMS など) は優れていますが、API から外部データを動的にフェッチする必要がある場合もあります。 React で useEffect フックを使用してデータを取得し、クライアント側で表示できます。たとえば、REST エンドポイントや GraphQL サービスなどの外部 API からデータをフェッチする方法は次のとおりです:

import React, { useEffect, useState } from "react";

const DataDisplay = () => {
  const [data, setData] = useState([]);

  useEffect(() => {
    // Fetch data from an external API
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(result => setData(result))
      .catch(error => console.error('Error fetching data:', error));
  }, []);

  return (
    
{data.map(item => (

{item.name}

{item.description}

))}
); }; export default DataDisplay;

4. Gatsby によるデータ表示の最適化

Gatsby は、データ表示を最適化し、パフォーマンスを向上させるいくつかの方法を提供します:

ページネーション

大規模なデータセットを表示する場合は、データをページ分割してページの読み込み時間を短縮し、コンテンツを管理しやすくすることが不可欠です。 Gatsby の createPages API を使用すると、ページ分割されたページを動的に生成できます。

const Blog = ({ pageContext, data }) => {
  const { currentPage, numPages } = pageContext;

  return (
    
{data.allMarkdownRemark.edges.map(({ node }) => (

{node.frontmatter.title}

{node.excerpt}

))}
); };

遅延読み込み

遅延読み込みは、必須ではないリソースの読み込みを遅らせ、パフォーマンスを向上させる手法です。たとえば、Gatsby の gatsby-image は画像を最適化でき、React.lazy または動的インポートはコンポーネントの読み込みを遅延できます。

import { LazyLoadImage } from 'react-lazy-load-image-component';

静的サイトの生成

Gatsby のビルド プロセスでは、ページが静的 HTML に事前レンダリングされ、パフォーマンスが大幅に向上します。ただし、クライアント側のレンダリングを使用して、実行時に動的コンテンツをフェッチおよび挿入することもできます。

5. Gatsby によるデータの視覚化

データを効果的に表示するには、チャートやグラフなどの視覚化が必要になる場合があります。 Chart.js や D3.js などのデータ視覚化ライブラリを Gatsby プロジェクトに統合して、視覚的なデータ表現をレンダリングできます。

import { Line } from "react-chartjs-2";

const data = {
  labels: ['January', 'February', 'March', 'April', 'May'],
  datasets: [
    {
      label: 'Sales',
      data: [65, 59, 80, 81, 56],
      fill: false,
      backgroundColor: 'rgb(75, 192, 192)',
      borderColor: 'rgba(75, 192, 192, 0.2)',
    },
  ],
};

const MyChart = () => (
  

Sales Over Time

);

結論

Gatsby でのデータの表示は、GraphQL とその React ベースのアーキテクチャとの統合のおかげで、柔軟で効率的なプロセスです。ローカル ファイル、CMS、API のいずれからデータを取得する場合でも、Gatsby は、豊富なデータ表示機能を備えた高性能 Web アプリケーションを構築するための強固な基盤を提供します。ページネーション、遅延読み込み、その他の最適化テクニックを実装することで、大規模なデータセットを処理する場合でも、Gatsby サイトの高速性と応答性を確保できます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/shieldstring/data-display-in-gatsby-1l1c?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3