Graphql 盖茨比可以使用过滤器进行静态查询吗?
可以使用过滤器进行静态查询吗 我使用strapi作为我的配置服务器 我将在构建时收集配置数据 我有一个组件,需要按用户数据(例如用户组)查询配置数据 然而,盖茨比似乎不允许我将任何var传递给查询,甚至不允许用param硬编码查询 e、 gGraphql 盖茨比可以使用过滤器进行静态查询吗?,graphql,gatsby,Graphql,Gatsby,可以使用过滤器进行静态查询吗 我使用strapi作为我的配置服务器 我将在构建时收集配置数据 我有一个组件,需要按用户数据(例如用户组)查询配置数据 然而,盖茨比似乎不允许我将任何var传递给查询,甚至不允许用param硬编码查询 e、 g StaticQuery有它自己的限制(这就是为什么它们被称为static),并且它们不允许任何动态参数。如图所示: 静态查询与页面查询有何不同 StaticQuery可以完成大部分工作 页面查询可以查询的内容,包括片段。主要区别 它们是: 页面查询可以接受
StaticQuery有它自己的限制(这就是为什么它们被称为static),并且它们不允许任何动态参数。如图所示: 静态查询与页面查询有何不同 StaticQuery可以完成大部分工作 页面查询可以查询的内容,包括片段。主要区别 它们是:
- 页面查询可以接受变量(通过pageContext),但只能是 添加到页面组件
不接受变量(因此 名称“static”),但可用于任何组件,包括页面StaticQuery
- StaticQuery不适用于原始React.createElement调用;请 使用JSX,例如
localhost:8000/\uuuuuuuu图形ql
playway以查看您的查询是否有效(应该有效)。通常,必须使用filter:{country\uu code:{eq:“CA”}
理想情况下,您的useStaticQuery
hook文件应该如下所示:
import { graphql, useStaticQuery } from 'gatsby';
export const useYourItems = () => {
const yourItems = useStaticQuery(
graphql`
query MyQuery {
allStrapiAvailableLanguageByMarkets(filter: {country: {code: {eq: "CA"}}}) {
nodes {
country {
code
}
languages {
code
name
}
}
}
}`,
);
return yourItems.allStrapiAvailableLanguageByMarkets;
};
然后,在另一个组件中:
const yourItems = useYourItems();
谢谢回复,我也读过了,但是打开它不允许过滤。。。即使是硬代码,您的查询是否在操场上工作(
localhost:8000/\uuuuuu graphql
)?您可以在那里自动添加过滤器。您是否检查了过滤器:{country\uuu code:{eq:“CA”}
?它在游乐场中工作,但如果在reactjs组件中使用此静态查询->它说×错误:无法获取此静态查询的结果。这可能是Gatsby中的一个bug,如果刷新页面无法修复它,请在中打开一个问题。当然,您可以重用您的useStaticQuery
。我提供了一个使用您的查询的示例。它不是嵌套函数,因此不会违反规则。如果您查看盖茨比官方文档中useStaticQuery
的用法,它们提供了类似的用法。最后,钩子是一个函数。此外,它允许您在不同的组件中重复使用它。试试看,让我知道。
const yourItems = useYourItems();