LoginSignup
1
0

More than 3 years have passed since last update.

AppSyncをクライアントで動かす(query編)

Last updated at Posted at 2020-05-03

はじめに

今日はGWアドベントカレンダー5日目です。昨日は事前準備をやったので今日はGraphQLの実装を進めます。今回はallItemのクエリを実行してデータを取得します。
また、GraphQLのサーバーですがCognito認証があると実装が面倒だったので2日目の内容のものに一旦戻しました(目的はGraphQLのクエリを叩くことだったので)

必要パッケージのインストール

Amplifyのためのパッケージをインストールします。

yarn add aws-amplify-react aws-amplify

また今回はFooks(useState())でクエリを叩きたいので、availityというFooksで簡単に非同期処理が扱えるパッケージをインストールします。

yarn add @availity/api-axios @availity/api-core @availity/hooks

実装

見せるほどの内容ではありませんが、単純にuseState()allItemのクエリを叩く処理はこんな感じになりました。

import React, { useState } from 'react'
import { useEffectAsync } from '@availity/hooks'
import { API, graphqlOperation } from 'aws-amplify'
import { allItem } from './graphql/queries'

const App = () => {
  const [item, setItem] = useState([{
    id: '',
    data: '',
  }])
  useEffectAsync(async () => {
    const result = await API.graphql(graphqlOperation(allItem))
    setItem(result.data.allItem)
  })
  return (
    <ul>
      {item.map(i =>
        <li>
          {i.data}
        </li>
      )}
    </ul>
  )
}

export default App

前回のcodegen./graphqlというフォルダと、querymutationそれぞれのクエリ用のファイルが自動で生成されたのでそれを用います。
API.graphql()で返ってきた結果はdataというフィールドにネストされた形でいつもどおりのクエリ実行結果が返ってくるみたいですね。

さいごに

AmplifyとAppSyncを用いると1行のコードでデータのフェッチが実装できてしまうようですね。バックエンドについてはロジックの実装を一切行っていないので爆速でアプリがつくれてしまうのがこの組み合わせの利点ですね。今回はここまでで明日はmutationを実装していきます。ではまた!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0