Apollo Stack支持像Relay这样的节点接口的全局对象标识吗?
我在阿波罗堆栈和继电器方面都很新。 我正试图在他们之间select投入我的时间。 在阅读完本书学习GraphQL和Relay之后 ,我转向Apollo了解它提供的内容,但现在互联网上的资源并不多。
我最近有这个问题,但无法find答案:Apollo是否支持像Relay这样的全局对象标识与节点接口? 如果不是,它是否有其他解决scheme来支持全球对象识别?
是的 !
它目前的工作方式( apollo-client
0.5版本)是ApolloClient
构造函数接受的ApolloClient
函数。
如果所有节点都有一个id
字段,并且它们在所有节点上都是唯一的(例如在Graphcool中,我们使用这个库生成唯一的id):
import ApolloClient from 'apollo-client'; const client = new ApolloClient({ dataIdFromObject: o => o.id });
你必须确保在你想要规范化的每个查询中包含id
字段。
如果您的ID仅适用于每种types,则可以将它们与__typename
结合以创build唯一的标识符:
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; }, });
代码取自官方的Apollo文档 。