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フェッチを行うことができます。