useEffectを使用した非同期APIフェッチの例


import React, { useEffect, useState } from 'react';
const MyComponent = () => {
  const [data, setData] = useState(null);
  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch('https://api.example.com/data');
        const jsonData = await response.json();
        setData(jsonData);
      } catch (error) {
        console.error('APIフェッチエラー:', error);
      }
    };
    fetchData();
  }, []);
  return (
    <div>
      {data ? (
        <ul>
          {data.map((item) => (
            <li key={item.id}>{item.name}</li>
          ))}
        </ul>
      ) : (
        <p>データをロード中...</p>
      )}
    </div>
  );
};
export default MyComponent;

上記のコードでは、MyComponentという関数コンポーネント内で、useStateフックを使用してdataという状態変数を宣言しています。dataはAPIから取得したデータを格納するために使用されます。

次に、useEffectフックを使用して非同期処理を実行するための関数fetchDataを定義します。この関数内で、fetch関数を使用してAPIからデータを取得し、取得したデータをJSON形式に変換してsetData関数を使用してdata状態を更新します。

fetch関数は非同期関数であるため、awaitキーワードを使用して非同期にデータの取得を待機します。また、エラーハンドリングのためにtry-catchブロックも使用しています。

最後に、useEffectフックの第2引数に空の配列[]を指定することで、初回のレンダリング時にのみfetchData関数が実行されるようにしています。

また、データの取得中にはローディングメッセージを表示し、データが取得された場合にはリスト形式で表示するようにしています。

このコード例を使用することで、Reactアプリケーション内でuseEffectを使用して非同期APIフェッチを行うことができます。