プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • React
  • 【React】react-queryでGraphQLを使う
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【React】react-queryでGraphQLを使う

10.08

  • miyabisan2
  • コメントを書く

この記事は1分で読めます

サンプルコード

GraphQLの操作情報は以下のように定義しておきます。指定したい情報を定義します。(下の例で言えばname)

1
2
3
4
5
6
7
const GET_XXX = gql`
  {
    xxx(first: 3) {
      name
    }
  }
`;

カスタムフックとして以下のhooksを定義します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { request } from 'graphql-request'
import { useQuery } from 'react-query'
import { GET_XXX } from '../queries/queries'
 
export const fetchXXX = async () => {
  const { rockets: data } = await request<フェッチするデータのデータ型<span class="crayon-sy">[</span><span class="crayon-sy">]</span>>(
    'GraphQLのGETエンドポイント',
     GET_XXX
  )
  return data
}
export const useQueryXXX = () => {
  return useQuery<フェッチするデータのデータ型<span class="crayon-sy">[</span><span class="crayon-sy">]</span>, Error>({
    queryKey: 'rockets',
    queryFn: fetchXXX,
    staleTime: 10,
    refetchOnWindowFocus: false,
    //refetchInterval: 3000,
  })
}

request

REST APIで言うところのAxiosになります。GraphQLの場合はrequestを使います。

第一引数でGraphQLのエンドポイント、第二引数でqueryのオブジェクトを指定します。

Apollo Clientとの比較

GraphQLで一番有名なライブライトしてはApollo Clientがあるかと思いますが、Apollo ClientはGraphQL専用ライブラリになります。

今回使用している「graphql-request」はGraphQL以外のデータフェッチにも対応しているのでより汎用性が高いライブラリと言っても良いです。

動作

  • REST APIで使用したような「getQueryData」を同じように使用してcacheにアクセスできます。
  • 最初のページをロードした時に1度だけgraphQLサーバーにフェッチを行います。
  • cacheから取得する場合はgraphQLサーバーに問い合わせは行わないです。
スポンサーリンク
  • 2022 10.08
  • miyabisan2
  • コメントを書く
  • GraphQL, React
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 02.20

    【React】「子コンポーネント」から「親コンポーネント」への値渡し

  2. 2021 02.11

    【React】テスト手法概要、Next.jsへのcypressの導入方法など

  3. 2021 02.08

    【Redux】「Reducer」、「Action」の実装方法

  4. 2021 04.29

    【React】状態管理の選択肢(「Hooks」、「Redux」、「React Query」)

  5. 2021 06.20

    【JavaScript】「APIモックライブラリ」の比較

  6. 2022 03.06

    【React】「CSSの選択肢」(Pure CSS、CSS Modules、CSS in JSなど)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Next.js】SSGでApollo Clientを…

【Hasura】テーブルの設定(「リレーションシップ」…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー