将Apollo数据直接反映到React Context

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (21)

我有一个标准的react-apollo graphql查询:

<Query query={USER_QUERY} variables={{ user: userId }}>
  {
    ({ loading, error, data }) => {
    if (loading) return <p>Loading…</p>
    if (error) return <p>An Error Occurred</p>
    return (
      <div>
        Data back from gql available!
      </div>
    )}
  }
</Query>

但我不确定如何通过React上下文共享获取的数据。我知道我可以将数据直接丢给提供者:

<Query query={USER_QUERY} variables={{ user: userId }}>
  {
    ({ loading, error, data }) => {
    if (loading) return <p>Loading…</p>
    if (error) return <p>An Error Occurred</p>
    return (
      <MyContext.Provider value={data}>
        Data back from gql available!
      </MyContext.Provider>
    )}
  }
</Query>

但似乎这可能无法提供处理缓存和其他数据相关问题的最佳功能。是否有更标准化的方法来处理必须是一个相当常见的用例?

提问于
用户回答回答于

我曾经认为这是react-apollo的另一种选择 - 我错过了反应 - 阿波罗扩展了基本的客户端库,你可以在其中简单地执行此操作:

client.query({
  query: gql`
    query {
      user {
        id
      }
    `,
    variables: { ...vars },
  })
  .then(res => console.log(res)
  .catch(err => console.log('an error occurred: ', err)

扫码关注云+社区

领取腾讯云代金券