我刚读完Apollo GraphQL网页中的tutorial,我(显然吗?)很茫然:)
我在这里是因为在用例中,我有一个客户端库(我写过,叫它InnerClient),它公开了一些内部进行grapqhl调用的方法,它没有UI。
现在,我想将该库导入一个react apollo项目(ApolloReactClient)中,并且我想了解在这种情况下如何利用Apollo Client的超能力:我没有任何查询或突变可以明确地做,我想调用我的InnerClient方法,等待响应(它们当然是异步的),然后使用Query组件返回的便捷属性(如数据,加载,错误...)在ApolloReactClient中呈现我的React组件
我读了一些有关Links的内容,也许这是正确的方法,但我不确定。
您能帮我解决这个问题吗? 您能否提供一个小例子,其中有一个由(Apollo)查询组件包装的React组件,可以像我这样从内部库中获取数据?
致谢
答案 0 :(得分:1)
我认为这是做到的方式
https://github.com/apollographql/apollo-link-state/tree/master/examples/async
编辑(添加更多信息): 基本上,它具有apollo-link-state的可能性,它允许将您的客户端状态与可以处理突变和查询的解析器相结合,该解析器和查询特别是通过@client指令为其设计的。
const client = new ApolloClient({
link: withClientState({ resolvers }),
cache: new InMemoryCache(),
});
这里您说的是阿波罗(Apollo)用于请求resolvers
并将客户端状态传递给他们。
const GET_CURRENT_POSITION = gql`
query getCurrentPosition($timeout: Int) {
currentPosition(timeout: $timeout) @client {
coords {
latitude
longitude
}
}
} `;
在这里定义客户端查询(请注意@client),并以此承诺以异步方式解决查询
const getCurrentPosition = options => {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
};
希望这会有所帮助!