【问题标题】:Can I apply filter to data result of useStaticQuery in Gatsby.js我可以在 Gatsby.js 中对 useStaticQuery 的数据结果应用过滤器吗
【发布时间】:2020-08-21 13:01:00
【问题描述】:

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

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

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

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

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

)

【问题讨论】:

    标签: graphql gatsby


    【解决方案1】:

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

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

    基本上,您正在循环遍历allData(所有月份)以找到与inputMonth 完全相同的一个。由于您将其保存在 matchedMonth 中,因此您可以随意播放(传递给组件等)。

    【讨论】:

    • 不完全是我需要的,但你的回答提醒我数据结果实际上只是数组,所以我可以通过javascript数组方法对其进行操作以获得我想要的任何东西,谢谢
    猜你喜欢
    • 2018-10-21
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2021-04-13
    • 1970-01-01
    相关资源
    最近更新 更多