カテゴリ: React 更新日: 2026/01/17

ReactでFetch APIとuseEffectを組み合わせる方法|初心者向けにわかりやすく解説

Fetch APIをuseEffectと組み合わせる方法
Fetch APIをuseEffectと組み合わせる方法

先生と生徒の会話形式で理解しよう

生徒

「ReactでAPIからデータを取ってきたいんですけど、どうやって書けばいいですか?」

先生

「Fetch APIを使えばサーバーからデータを取得できますよ。そして、その処理はuseEffectと一緒に使うのが基本です。」

生徒

「useEffectって、名前からして難しそう…何をするためのものなんですか?」

先生

「Reactで画面が表示されたタイミングで実行したい処理があるときに使います。今回はuseEffectとFetch APIを組み合わせる方法を、わかりやすく解説しますね!」

1. Fetch APIとは?

1. Fetch APIとは?
1. Fetch APIとは?

Fetch API(フェッチエーピーアイ)は、サーバーと通信するためのJavaScriptの標準機能です。

たとえば、「ブログ記事を読み込む」「天気情報を取得する」「ユーザー情報を表示する」など、データを外部から取得したいときに使います。

fetch関数を使えば、指定したURLからJSON形式のデータを簡単に受け取ることができます。

2. useEffectとは?

2. useEffectとは?
2. useEffectとは?

useEffect(ユーズエフェクト)は、Reactの関数のひとつで、「副作用(ふくさよう)」と呼ばれる処理を実行するために使います。

副作用とは、画面を表示するだけでなく、データの取得・タイマー処理・イベント登録など、画面の外で何かを動かすような処理のことです。

コンポーネントが最初に表示されたタイミングで一度だけ処理を実行したいときに、useEffectが活躍します。

3. なぜFetch APIとuseEffectを組み合わせるの?

3. なぜFetch APIとuseEffectを組み合わせるの?
3. なぜFetch APIとuseEffectを組み合わせるの?

Reactでは、コンポーネントが表示された瞬間にAPI通信をしたい場面がよくあります。

たとえば「アプリを開いたら、記事一覧を自動で読み込む」ような動作です。

このような「最初の1回だけ実行したい処理」は、useEffectと組み合わせることで自然に実現できます。

4. ReactでFetch APIとuseEffectを使った基本の書き方

4. ReactでFetch APIとuseEffectを使った基本の書き方
4. ReactでFetch APIとuseEffectを使った基本の書き方

ここでは、実際にReactでAPIからデータを取得して表示するサンプルコードを見てみましょう。


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

function App() {
  const [post, setPost] = useState(null);

  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/posts/1")
      .then((res) => res.json())
      .then((data) => setPost(data));
  }, []);

  return (
    <div>
      {post ? (
        <div>
          <h2>{post.title}</h2>
          <p>{post.body}</p>
        </div>
      ) : (
        <p>読み込み中...</p>
      )}
    </div>
  );
}

export default App;
(画面に「読み込み中...」と表示され、その後、取得した記事のタイトルと本文が表示されます)

5. useEffectの第2引数に注目!

5. useEffectの第2引数に注目!
5. useEffectの第2引数に注目!

上のコードでuseEffect(() => { ... }, [])という書き方をしています。

この[](空の配列)は、「このuseEffectは最初の1回だけ実行する」という意味になります。

もしここに値を入れると、その値が変わるたびにuseEffectが再実行されます。

6. エラー処理を追加してみよう

6. エラー処理を追加してみよう
6. エラー処理を追加してみよう

ネットが繋がっていなかったり、APIのURLが間違っていると、エラーになることがあります。

そのため、.catch()を使って、エラー処理も忘れずに追加しましょう。


useEffect(() => {
  fetch("https://jsonplaceholder.typicode.com/posts/1")
    .then((res) => res.json())
    .then((data) => setPost(data))
    .catch((error) => {
      console.error("エラーが発生しました", error);
    });
}, []);

このように書くことで、失敗時のトラブルにも対応できます。

7. async/awaitで書くパターン

7. async/awaitで書くパターン
7. async/awaitで書くパターン

初心者には少し難しいかもしれませんが、async/awaitという書き方も使えます。

この方法では、非同期処理をawaitで待つことができ、thenを何回も書く必要がなくなります。


useEffect(() => {
  const fetchData = async () => {
    try {
      const res = await fetch("https://jsonplaceholder.typicode.com/posts/1");
      const data = await res.json();
      setPost(data);
    } catch (error) {
      console.error("エラーが発生しました", error);
    }
  };

  fetchData();
}, []);

初心者のうちはthenで慣れておき、あとからasync/awaitに移行するとわかりやすいです。

8. ローディング状態の管理も大事

8. ローディング状態の管理も大事
8. ローディング状態の管理も大事

データが読み込まれていない間、「読み込み中...」と表示することで、ユーザーに優しいUIになります。

そのためには、useStateを使ってloadingという状態を作り、データ取得の前後で切り替えるようにします。

ユーザーが「アプリが動いてる!」と安心できるような工夫はとても大切です。

9. コンポーネントが表示されるときだけ実行する

9. コンポーネントが表示されるときだけ実行する
9. コンポーネントが表示されるときだけ実行する

useEffectは、「画面にコンポーネントが表示されたとき」に実行されるのがポイントです。

ボタンを押したときにAPIを呼びたい場合はuseEffectではなく、イベント処理の中でfetchを呼ぶようにします。

つまり、useEffectは「初回に自動実行する用」と覚えておくと良いでしょう。

まとめ

まとめ
まとめ

ReactでFetch APIとuseEffectを組み合わせてデータ取得を行う方法を振り返ると、画面表示のタイミングと非同期処理の関係を丁寧に理解することが大切だとわかります。特にuseEffectは、コンポーネントが表示された瞬間に処理を開始する便利な仕組みであり、外部APIから情報を取得して画面に反映させたい場合に非常に相性の良い機能です。さらに、Fetch APIを使うことで、ブログ記事や天気情報、ユーザーデータなど多様な外部データを柔軟に扱えるようになります。こうした仕組みを組み合わせることで、リアルタイム性のある動的なReactアプリケーションが実現でき、ユーザー体験をより豊かにしていけます。 加えて、エラー処理やローディング状態の管理も、実践的なWebアプリ制作では欠かせない重要な要素です。単純にデータを取得するだけでなく、通信が失敗したときの動作や、読み込み中の表示を整えることによって、より信頼性の高いインターフェースが生まれます。async/awaitを使った書き方も覚えることで、非同期処理を直感的に記述でき、可読性の高いコードが実現します。 以下では、useEffectとFetch APIの動きをより理解しやすくするために、実際の流れをまとめたサンプルコードを再掲しながらポイントを整理します。

サンプルコードで学ぶuseEffectとFetch APIの基本構造


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

function Article() {
  const [content, setContent] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const loadArticle = async () => {
      try {
        const response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
        const json = await response.json();
        setContent(json);
      } catch (e) {
        console.error("データ取得時に問題が発生しました", e);
      } finally {
        setLoading(false);
      }
    };

    loadArticle();
  }, []);

  return (
    <div class="article-box">
      {loading ? (
        <p>読み込み中です…</p>
      ) : (
        <div>
          <h2>{content.title}</h2>
          <p>{content.body}</p>
        </div>
      )}
    </div>
  );
}

export default Article;

このコードでは、useEffectが「最初の1回だけ」実行される点が特に要となります。空の配列を第2引数に渡すことで、コンポーネントが描画された瞬間に非同期処理が開始され、データが届けば画面を再描画して表示を更新します。その間はローディングメッセージが利用者に状況を伝えてくれるため、視認性と操作性の両方が改善されます。また、try-catch-finallyを使うことで、通信成功時・失敗時・処理完了時のすべてを丁寧に扱い、堅牢なコードを実現できます。こうした実装はAPI連携を行うアプリでは非常に多くの場面で活用され、より信頼性の高いUIへとつながります。 Fetch APIとuseEffectの組み合わせは、React学習の中でもつまずきやすいポイントですが、一度仕組みを理解すると、データ取得・画面更新・ローディング管理の流れが自然に身につきます。今後、APIを複数回呼ぶケースや条件付きでuseEffectを発火させる応用的な使い方にもつながっていくため、今回の基礎をしっかり押さえておくことが重要です。

先生と生徒の振り返り会話

生徒

「useEffectがどんなタイミングで動くのか、実際のコードを見たらよく理解できました!最初の1回だけ実行したい理由も納得です。」

先生

「そうだね。画面が表示された直後にAPIを呼びたい場面はとても多いから、useEffectとの組み合わせは基本的なパターンになるよ。」

生徒

「ローディング表示もユーザーに優しくて大事なんですね。エラー処理も加えると一気に実践的な感じがしました!」

先生

「その通り。ユーザーの安心感を守るためにも、読み込み中の表示や通信失敗への対応は欠かせないよ。async/awaitに慣れるともっと自由に書けるようになるね。」

生徒

「はい!Fetch APIとuseEffectの組み合わせがしっかり理解できたので、これから他のAPI連携にも挑戦してみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

ReactでFetch APIとは何ですか?何のために使いますか?

Fetch APIは、Reactに限らずJavaScriptで使えるデータ通信の仕組みです。外部APIからJSONデータなどを取得し、Reactコンポーネントで表示するために使われます。
カテゴリの一覧へ
新着記事
New1
React
Reactコンポーネントの再利用と分割を完全マスター!初心者でもわかるコンポーネント設計
New2
React
ReactでAxiosインターセプターの使い方を完全ガイド!初心者でもわかるリクエストとレスポンスの処理方法
New3
React
JSXの書き方!初心者でもわかるReactタグと属性の基本ルール解説
New4
React
ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.6
Java&Spring記事人気No6
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.7
Java&Spring記事人気No7
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.8
Java&Spring記事人気No8
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介