将GraphQL查询结果作为没有JSX的对象进行反应?

时间:2019-01-19 01:09:51

标签: reactjs graphql apollo

我来这里是不得已而为之!我一直在搜索1-2周,没有遇到任何问题!

我想在React中使用GraphQL(我有一个Apollo react客户端和Apollo后端),但是我希望能够调用查询并将结果作为对象返回,而无需使用组件或类来完成

我尝试使用client.query,但是无论尝试哪种方式,我只会得到诺言。

我想要这样的东西:

const myData = 某种查询调用

编辑:

我想做的是将一个对象数组传递到一个组件中,该组件随后将按照我想要的方式呈现数据。

一个示例是将事件列表传递到要在当天显示的日历单元格中。

这是我想做的更好的例子:

SIZE_MAX

1 个答案:

答案 0 :(得分:0)

网络请求是异步的,以防止阻塞UI。 Apollo在幕后使用的Fetch API使用Promises而不是更传统的回调来处理整个网络上的异步请求资源,因此Apollo的API也基于Promises。没有可用的方法可以让您同步获取GraphQL查询-您只需要适当地构建代码结构即可在Promise解析后对其进行处理。

以下示例假定您已正确配置了客户端实例。使用then

function doSomething () {
  client.query({ query: SOME_QUERY })
    .then(({ data }) => {
      // Use the returned data however you like
    })
    .catch(error => {
      // Handle error
    })
}

使用异步/等待:

async function doSomething () {
  try {
    const { data } = await client.query({ query: SOME_QUERY })
  } catch (error) {
    // Handle error
  }
}

如果您不熟悉Promises,则查看适当的documentation并签出一些tutorials对您有利。