relay-starter-kit
我从Relay 和 GraphQL 文档开始,并且一直在研究。但有不少领域是无法解释和神秘的。
说真的,我到处阅读了很多关于所有这些事情的文档,但找不到对以下问题的任何令人满意的解释:
这个是来做什么的?我放了日志,但它甚至根本没有被调用:
var {nodeInterface, nodeField} = nodeDefinitions(
(globalId) => {
var {type, id} = fromGlobalId(globalId);
if (type === 'User') {
return getUser(id);
} else if (type === 'Widget') {
return getWidget(id);
} else {
return null;
}
},
(obj) => {
if (obj instanceof User) {
return userType;
} else if (obj instanceof Widget) {
return widgetType;
} else {
return null;
}
}
);
而这样做的实际效果是什么:
interfaces: [nodeInterface],
也许与此有关,node
这里的字段是做什么的:
var queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
node: nodeField,
// Add your own root fields here
viewer: {
type: userType,
resolve: () => getViewer(),
},
}),
});
该领域的魔力是什么id
?是globalIdField
为了什么?
我的数据库中有一个id
,并认为我可以在我的 GraphQL 对象中使用它:
代替:
id: globalIdField('User'),
我想使用我的数据库 ID:
id: {
type: GraphQLID,
description: 'The identifier'
},
但如果我这样做,我会在浏览器中收到错误提示RelayQueryWriter: Could not find a type name for record '1'
。
我可以通过添加到我的组件容器 Relay Query 来消除该错误,__typename
但这似乎完全错误。
如果您能在这里提供更深入的内容和更好的解释并增强官方文档,那就太好了。
谢谢