我一直在研究一些 Graph QL/React/Relay 示例,但遇到了一些奇怪的语法。
在 Graphql 对象中定义字段时,使用以下语法:
const xType = new GraphQLObjectType({
name: 'X',
description: 'A made up type for example.',
fields: () => ({
field: {/*etc.*/}
})
});
据我所知,这只是定义一个匿名函数并将其分配给 xType.fields。该匿名函数返回包含字段定义的对象。
我假设 Graph QL 架构机制如何工作,必须将其定义为返回对象的函数,而不仅仅是返回对象。但让我困惑的部分是大括号周围的括号。
这是为了区分对象定义和函数定义吗?是为了让读者清楚起见吗?
谷歌搜索发现的唯一类似的语法是在爱彼迎风格指南中,它似乎是一个可读性/清晰度的东西。
当我开始更多地使用 Graph QL 时,只是在寻找超出我假设的确认或解释。
fields: () => ({
field: {/*etc.*/}
})
是一个隐式返回对象(文字)的函数。不使用()
JavaScript 解释器解释{}
作为函数体的包装器而不是作为对象。
不使用括号:()
, the field: ...
语句被视为label
语句和函数返回undefined
。等效语法是:
fields: () => { // start of the function body
// now we have to define an object
// and explicitly use the return keyword
return { field: {/*etc.*/} }
}
所以父母不在那里澄清。它用于使用箭头函数的隐式返回功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)