ホームページ >ウェブフロントエンド >jsチュートリアル >React でのデータの取得
データの取得は React アプリケーションの基礎であり、ユーザー データのロード、コンテンツの動的レンダリングなどの機能を強化します。 React は、アプリの複雑さとパフォーマンスのニーズに応じて選択できるさまざまなライブラリとアプローチを備えた、データ処理のための柔軟なエコシステムを提供します。この記事では、Fetch API、Axios、Async/Await、React Query、SWR、GraphQL など、React でデータをフェッチするためのいくつかの主要なメソッドについて説明します。
Fetch API は、ネットワーク リクエストを簡素化する組み込み Web API であり、最新のブラウザで広くサポートされています。 API リクエストからのデータを表す Response オブジェクトで解決される Promise を返します。
import React, { useEffect, useState } from 'react'; const FetchExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.json(); setData(data); } catch (error) { setError(error.message); } finally { setLoading(false); } }; fetchData(); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
Axios は、ブラウザーおよび Node.js 用の Promise ベースの HTTP クライアントであり、リクエストとレスポンスのインターセプターや、リクエストとレスポンスを変換する機能など、Fetch API よりも多くの機能を提供します。
import React, { useEffect, useState } from 'react'; import axios from 'axios'; const AxiosExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { axios .get('https://jsonplaceholder.typicode.com/posts') .then((response) => { setData(response.data); setLoading(false); }) .catch((error) => { setError(error.message); setLoading(false); }); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
async と await を使用すると、JavaScript での非同期コードの処理がはるかに簡単になりました。 Fetch API と Axios の両方を async/await 構文で使用すると、コードが読みやすくなります。
const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); const data = await response.json(); setData(data); } catch (error) { console.error('Error fetching data:', error); } };
React Query はサーバー状態のキャッシュ、同期、更新を処理し、データのフェッチ、更新、キャッシュを簡単に行うことができます。 React Query は自動データ キャッシュと再フェッチ機能を備えているため、複雑なアプリケーションでよく使用されます。
import React, { useEffect, useState } from 'react'; const FetchExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.json(); setData(data); } catch (error) { setError(error.message); } finally { setLoading(false); } }; fetchData(); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
SWR は、キャッシュと再検証戦略を優先するもう 1 つのデータ取得ライブラリです。 Vercel によって開発された SWR は、ユーザーがページを再訪問するたびにバックグラウンドでデータを自動的に再取得することで、データを最新の状態に保ちます。
import React, { useEffect, useState } from 'react'; import axios from 'axios'; const AxiosExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { axios .get('https://jsonplaceholder.typicode.com/posts') .then((response) => { setData(response.data); setLoading(false); }) .catch((error) => { setError(error.message); setLoading(false); }); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
GraphQL は、返されるデータをより詳細に制御できる API のクエリ言語です。これにより、必要なフィールドのみをフェッチできるようになり、オーバーフェッチやアンダーフェッチが減ってパフォーマンスが向上します。
Apollo クライアントを使い始めるには、npm install @apollo/clientgraphql を実行してインストールします。
const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); const data = await response.json(); setData(data); } catch (error) { console.error('Error fetching data:', error); } };
React でのデータ取得に適切な方法を選択することは、プロジェクトの複雑さ、パフォーマンスのニーズ、ライブラリとツールの好みによって異なります。簡単な概要は次のとおりです:
以上がReact でのデータの取得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。