GraphQL - Apollo 客户端不使用钩子?

Rei*_*eid 6 aws-lambda graphql react-native apollo-client

我正在尝试将 Apollo GraphQL 客户端用于 React Native。但是,在我的应用程序的某些部分,我需要对 GraphQL 数据进行修改,这样界面就不会暴露给用户。

例如,在我的注册页面上,我想在数据库中创建一个用户,但只有在我完成并验证所有内容、创建 uuid 等(需要类​​的东西)之后。如果通话成功,我想立即转到应用程序的主页。如果没有,我想通知用户。

因此,我需要访问来执行 GraphQL 请求,无需挂钩,只需使用回调来更改 UI。这可能吗,怎么做?

小智 8

// clients/apollo.ts

const apolloClient = new ApolloClient({
    uri: "/graphql",
    cache: new InMemoryCache()
})

// queries/customer.ts
const GET_CUSTOMERS = gql`
    query {
       getCustomers() {
           name
       }
    }
`


// components/somewhere.ts   
const result = await apolloClient.query({
    query: GET_CUSTOMERS ,
    variables: {}
})
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到 Stack Overflow,感谢您提供答案。请您编辑您的答案以包含对您的代码的解释吗?这将帮助未来的读者更好地理解正在发生的事情,特别是那些刚接触该语言并难以理解这些概念的社区成员。当已经有一个被社区验证的公认答案时,这一点尤其重要。在什么条件下您的方法可能会受到青睐?您正在利用新功能吗? (4认同)

lig*_*lbs 7

该文档没有很好地解释它,但您可以简单地在 ApolloClient 对象上 调用query或。https://www.apollographql.com/docs/react/api/core/ApolloClient/#apolloclient-functionsmutate

与其他答案相比,这可能比进行原始调用更好,fetch因为它使用与应用程序的其余部分相同的缓存层,而不是绕过它。


Jim*_*Jim 4

是的,有可能。

对 GraphQL 服务的调用仅需要一个键值对querymutation在正文中以及您尝试发送的查询/突变。

您可以通过一个简单的fetch请求来完成此操作,如POST、 、cURL或通过邮递员...只要它是一个POST请求,这并不重要。

另请参见此处。