Есть ли способ изменить запросы GraphQL в компоненте страницы в зависимости от того, работает ли сайт в режиме разработки или в рабочем режиме?
Вы не можете напрямую управлять текстом запроса, но вы можете передавать другой контекст в зависимости от того, находитесь вы в режиме разработки или в режиме продакшена.
Если это относится к проблеме, описанной в https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943
программно создать список блогов, чтобы вы могли передать context
в запрос
createPage({
path: "/blog",
template: <some_template>,
context: {
draftBlacklist: process.env.NODE_ENV === `production` ? [true] : []
}
})
а затем в запросе:
query BlogListing($draftBlacklist: [String!]!) {
allMarkdownRemark(filter: {frontmatter: {draft: {nin: $draftBlacklist}}}) {
edges {
node {
frontmatter {
title
draft
}
}
}
}
Что должно показать все узлы в dev и отфильтровать все узлы с draft
установленным на true
в производстве. Возможно, возникла некоторая проблема с кешированием (если вы запустите сборку после разработки, мы не будем повторно запускать запрос atm). Но если вы используете netlify
(или другие виды CI / CD) для производственных сборок, это должно работать.
Самый полезный комментарий
Вы не можете напрямую управлять текстом запроса, но вы можете передавать другой контекст в зависимости от того, находитесь вы в режиме разработки или в режиме продакшена.
Если это относится к проблеме, описанной в https://github.com/gatsbyjs/gatsby/issues/10844#issuecomment -471349943
программно создать список блогов, чтобы вы могли передать
context
в запроса затем в запросе:
Что должно показать все узлы в dev и отфильтровать все узлы с
draft
установленным наtrue
в производстве. Возможно, возникла некоторая проблема с кешированием (если вы запустите сборку после разработки, мы не будем повторно запускать запрос atm). Но если вы используетеnetlify
(или другие виды CI / CD) для производственных сборок, это должно работать.