首页 > 解决方案 > 我可以在 Gatsby.js 中对 useStaticQuery 的数据结果应用过滤器吗

问题描述

我是 Gatsby.js 的初学者,我正在开发一个下拉 12 个月的页面。一旦用户选择了月份,我会将值传递给一个组件,该组件将根据所选月份显示不同的结果集。

有一个 graphql 查询可以通过在我的组件中使用 useStaticQuery 来检索数据。

我知道 useStaticQuery 不能接受任何变量,那么是否可以过滤返回的数据并根据输入的月份创建另一个数据集?还是应该只创建 12 个组件并根据所选月份显示相应的组件?

(实际上我尝试循环数据并成功返回单个聚合值,但我不确定是否可以返回数据结果的子集

data.allData.edges.forEach(edge => {
    if(edge.node.month==inputMonth)
        total=total+edge.node.amount
})
outValue= total

)

标签: graphqlgatsby

解决方案


我认为您正在尝试使用find()循环。在你的情况下:

let matchedMonth = data.allData.edges.find(edge => edge.node.month === inputMonth)

基本上,您正在循环allData(所有月份)以找到哪个完全等于inputMonth. 由于您将其保存在其中,因此matchedMonth您可以播放任何您想要的内容(传递给组件等)。


推荐阅读