我想在组件中使用条件查询,如下所示:
export const pageQuery =
DATA_SOURCE === 'strapi'
? graphql`
query AllNews {
allStrapiApiupdates(sort: { order: DESC, fields: [date] }) {
edges {
node {
id
title
description
date(formatString: "DD.MM", locale: "ru")
}
}
}
}
`
: graphql`
query AllNews {
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___date] }
filter: { frontmatter: { type: { eq: "news" } } }
) {
edges {
node {
id
frontmatter {
title
date(formatString: "DD.MM", locale: "ru")
type
}
html
}
}
}
}
`
但是我得到了错误:
Uncaught (in promise) ReferenceError: graphql is not defined at Module.eval (D:/Projects/AHML-DWH/api-news-front/src/pages/index.tsx:68) at eval (D:/Projects/AHML-DWH/api-news-front/src/pages/index.tsx:146) at Module../src/pages/index.tsx (commons.js:9487) ...
我想这与转码有关。有什么办法吗?
答案 0 :(得分:1)
简单的答案是,不,这是不可能的。
Gatsby将查询从模板文件中拉出,并对其进行特殊处理。它没有任何方法可以使这些查询动态化。从理论上讲,您可以使用GraphQL directive来实现。但是我认为,按照您发布的方式,不可能在盖茨比内部做到这一点。