在客户端上运行AppSync(查询部分)

首先。.)

今天是GW圣诞日历的第五天。昨天我们进行了事前准备,所以今天我们将继续实现GraphQL。这次我们将执行allItem查询来获取数据。
另外,关于GraphQL服务器,由于Cognito认证实现比较复杂,所以我们暂时回到了第二天的内容(因为目标是发出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的文件夹以及用于query和mutation的自动生成文件, 所以我们将使用它。

返回的API.graphql()结果似乎以嵌套在名为data的字段内的常规查询结果形式返回。

最后

使用Amplify和AppSync,可以在一行代码中实现数据的获取。由于没有进行后端逻辑的实现,因此可以快速创建应用程序的优势是这种组合的优点。这次就到这里,明天我们将开始实现mutation。再见!

广告
将在 10 秒后关闭
bannerAds