graphql - 我可以在 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
)
解决方案
我认为您正在尝试使用find()
循环。在你的情况下:
let matchedMonth = data.allData.edges.find(edge => edge.node.month === inputMonth)
基本上,您正在循环allData
(所有月份)以找到哪个完全等于inputMonth
. 由于您将其保存在其中,因此matchedMonth
您可以播放任何您想要的内容(传递给组件等)。
推荐阅读
- java - 我该如何解决这个问题:警告:字体“Times”和“Times”不适用于 Java 逻辑字体“Serif”
- responsive-design - 每当 API 有可用结果时与客户端共享数据?
- python - 需要帮助找到混淆矩阵的精度和召回率
- python - 如何将 Python 列表转换为带有附加编号的多行?
- java - 在 pom.xml 中添加 mockito-inline 依赖导致 Mockmaker 问题
- android - 如何在 kotlin Android 中访问更大的 jsonArray json 中的 json 数组中的字符串
- linux - 在 Linux 文件系统中大小 8E 是什么意思?
- html - 将附加组件添加到表中的 tr 元素
- php - 数学/比较检查不起作用
- javascript - 将新原型分配为 InheritingClass.prototype = Object.create(InheritedClass.prototype)