kkk*_*kkk 7 relay node.js graphql apollostack
我在Apollo Stack和Relay都很新.我想在他们之间做出选择来投入我的时间.在阅读了学习GraphQL和Relay这本书之后,我转向Apollo了解它提供的内容但是现在互联网上没有太多资源.
我最近有这个问题,但无法找到答案:Apollo是否支持全局对象识别,如Relay与节点接口一样?如果没有,它是否有任何替代解决方案来支持全局对象识别?
mar*_*ani 11
是的!
它当前的工作方式(版本0.5 apollo-client)是使用构造函数接受的dataIdFromObject函数ApolloClient.
如果所有节点都有一个id字段,并且它们在所有节点中都是唯一的(例如,在Graphcool中,我们使用此库生成唯一ID ):
import ApolloClient from 'apollo-client';
const client = new ApolloClient({
dataIdFromObject: o => o.id
});
Run Code Online (Sandbox Code Playgroud)
您必须确保id在要标准化的每个查询中包含该字段.
如果您的ID仅为每种类型唯一,则可以将它们组合在一起__typename以创建唯一标识符:
const client = new ApolloClient({
dataIdFromObject: (result) => {
if (result.id && result.__typename) {
return result.__typename + result.id;
}
// Make sure to return null if this object doesn't have an ID
return null;
},
});
Run Code Online (Sandbox Code Playgroud)
代码取自Apollo官方文档.
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |