Используя gatsby-node.js
и создавая страницы программно, у меня есть 2 варианта:
- Я могу сделать запрос graphql на
gatsby-node.js
всего, что мне нужно, и затем передать (например) массивкрая с context
для различных шаблонов, которые я использую.
Таким образом, шаблону не нужно будет делать еще один graphql
запрос снова
Я могу сделать тот же запрос на
gatsby-node.js
(потому что в любом случае мне нужна информация), но затем я могу просто передать
context
соответствующую информацию шаблонам, чтобы они могли выполнять другие
graphql
запросы кполучить нужные данные.
Таким образом, я не передаю тонны данных через контекст (это не так, но это может произойти в конце концов), но вместо этого я повторяю запросы к базе данных.
Что эффективнее?Я вижу, что документы, кажется, предлагают повторить graphql
запросы, но я не совсем уверен.
Итак, вопрос в том, есть ли какой-либо недостаток в выполнении набора вызовов graphql
в Гэтсби?Или предпочтительнее сделать один вызов и использовать javascript для остальных?
(пример)
export const createPages = ({ graphql, actions }) => {
...
return graphql(`
query {
...
`).then(result => {
...
result.data.allMarkdownRemark.edges.map(({ node }) => {
createPage({
component: path.resolve(`./src/templates/myTemplate.js`),
context: {
name: node.name,
title: node.title,
date: node.date,
tags: node.tags,
html: node.html,
},
...
и в шаблоне не делать никаких запросов, поскольку необходимыесодержимое в контексте
или наоборот
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
}
}
}
в моих глазах выполнение этих двух запросов кажется излишним, но, может быть, чрезмерное использование context
как-то пагубно?