ReactとGraphQLを組み合わせた効率的なデータフェッチング
ReactとGraphQLを組み合わせることで、効率的かつ柔軟なデータフェッチングが可能になります。この記事では、ReactアプリケーションでGraphQLを活用し、APIからデータを取得する方法や、最適なデータ管理手法について説明します。
目次
GraphQLとは何か?
GraphQLはAPIのクエリ言語であり、必要なデータのみを取得できます。これにより、オーバーフェッチやアンダーフェッチを防ぎます。
query {
user(id: 1) {
id
name
email
}
}ReactでGraphQLを使う準備
ReactアプリにGraphQLを導入するには、Apollo Clientがよく使われます。
npm install @apollo/client graphqlApollo Clientのセットアップ
Apollo Clientを使用してGraphQLエンドポイントに接続します。
import { ApolloClient, InMemoryCache, ApolloProvider } from '@apollo/client';
const client = new ApolloClient({
uri: 'https://example.com/graphql',
cache: new InMemoryCache()
});
function App() {
return (
<ApolloProvider client={client}>
<MyComponent />
</ApolloProvider>
);
}GraphQLクエリを実行する
useQueryフックを使用してGraphQLクエリを実行します。
import { useQuery, gql } from '@apollo/client';
const GET_USER = gql`
query GetUser($id: ID!) {
user(id: $id) {
id
name
}
}
`;
function User() {
const { loading, error, data } = useQuery(GET_USER, {
variables: { id: 1 }
});
if (loading) return <p>Loading...</p>;
if (error) return <p>Error :(</p>;
return <h1>{data.user.name}</h1>;
}変数付きクエリ
GraphQLでは動的に変数を渡してデータを取得できます。
const { loading, error, data } = useQuery(GET_USER, {
variables: { id: 2 }
});ミューテーションの使用
データの追加や更新にはuseMutationフックを使用します。
import { useMutation, gql } from '@apollo/client';
const CREATE_USER = gql`
mutation CreateUser($name: String!) {
createUser(name: $name) {
id
name
}
}
`;
function AddUser() {
const [createUser] = useMutation(CREATE_USER);
return (
<button onClick={() => createUser({ variables: { name: 'New User' } })}>
Add User
</button>
);
}データのキャッシュ管理
Apollo Clientはデフォルトでキャッシュを管理し、不要なリクエストを削減します。
エラーハンドリング
useQueryやuseMutationのエラーレスポンスを適切に処理します。
サブスクリプション
リアルタイムデータにはGraphQLのSubscriptionを使用します。
パフォーマンスの最適化
不要なリクエストを避け、キャッシュの有効活用が重要です。
プロジェクトへの適用
小規模プロジェクトではGraphQLを単純に統合し、大規模プロジェクトではデータ管理を適切に行います。
まとめ
ReactとGraphQLを組み合わせることで、効率的なデータフェッチングと柔軟なAPI操作が可能になります。
-
前の記事
PyCharm 設定ウィンドウを開くショートカットキー 2025.03.11
-
次の記事
PHPエラー『Warning: include(): Failed Opening』の解決方法 2025.03.11
コメントを書く