gatsbyjs:多次使用graphql,还是一次通过上下文传递结果?
使用gatsbyjs:多次使用graphql,还是一次通过上下文传递结果?,gatsby,graphql-js,Gatsby,Graphql Js,使用gatsby node.js并以编程方式创建页面,我有两个选项: 我可以在gatsby node.js上对我需要的所有东西进行graphql查询,然后使用context将边数组传递给我使用的不同模板 这样,模板就不需要再次执行另一个graphql查询 我可以在gatsby node.js上执行相同的查询(因为我无论如何都需要这些信息),但是我可以使用context将相关信息传递给模板,这样他们就可以执行其他graphql查询来检索他们需要的数据 这样,我就不会通过上下文传递大量数据(事实并非
gatsby node.js
并以编程方式创建页面,我有两个选项:
gatsby node.js
上对我需要的所有东西进行graphql查询,然后使用context
将边数组传递给我使用的不同模板graphql
查询
gatsby node.js
上执行相同的查询(因为我无论如何都需要这些信息),但是我可以使用context
将相关信息传递给模板,这样他们就可以执行其他graphql
查询来检索他们需要的数据graphql
查询,但我不完全确定
所以问题是,在盖茨比中对graphql
进行大量调用有什么缺点吗?或者最好只调用一次,其余的调用使用javascript?
(示例)
在模板中,不要进行任何查询,因为所需的内容在上下文中
还是相反
createPage({
component: path.resolve(`./src/templates/myTemplate.js`),
context: {
name: node.name,
},
在模板中,执行特定的查询
query($name: String) {
allMarkdownRemark(filter: { name: {eq: $name }}) {
edges {
node {
name
title
date
tags
html
}
}
}
在我看来,做这两个查询似乎是多余的,但可能是过度使用
上下文
在某种程度上是有害的?最后,我决定将尽可能少的查询保留在gatsby node.js
中,每个模板最终都会执行更适合其需要的查询,我决定将最小可能的查询保留在gatsby node.js
中,并且每个模板执行的查询都更适合它们需要的内容
但真正完整的数据不应该通过上下文传递到页面——您应该只传递在页面查询中使用的最小需要的数据(如ID或slug),以便在那里获得完整的数据
我认为您的示例数据足够小,这无关紧要,不过我确实想补充一点,为每个模板创建查询有一些好处:
- 如何查询数据就放在它的组件旁边-当某些东西需要调试时,不要在
和模板之间来回移动gatsby node.js
- 添加数据更容易,因为您只需要修改查询(相对于修改查询,然后将数据添加到上下文)
- 如何查询数据就放在它的组件旁边-当某些东西需要调试时,不要在
和模板之间来回移动gatsby node.js
- 添加数据更容易,因为您只需要修改查询(相对于修改查询,然后将数据添加到上下文)
- FWIW,这里有这个
但真正完整的数据不应该通过上下文传递到页面——您应该只传递在页面查询中使用的最小需要的数据(如ID或slug),以便在那里获得完整的数据
我认为您的示例数据足够小,这无关紧要,不过我确实想补充一点,为每个模板创建查询有一些好处:
query($name: String) {
allMarkdownRemark(filter: { name: {eq: $name }}) {
edges {
node {
name
title
date
tags
html
}
}
}