Могу ли я применить фильтр к результату данных useStaticQuery в Gatsby.js

#graphql #gatsby

#graphql #gatsby

Вопрос:

Я новичок в Gatsby.js Я разрабатываю страницу с выпадающим списком на 12 месяцев. Как только пользователь выберет месяц, я передам значение в компонент, который будет отображать другой набор результатов на основе выбранного месяца.

В моем компоненте есть запрос graphql для извлечения данных с помощью useStaticQuery.

Я понимаю, что useStaticQuery не может принимать какие-либо переменные, поэтому возможно ли отфильтровать возвращаемые данные и создать другой набор данных на основе введенного месяца? Или я должен просто создать 12 компонентов и отобразить соответствующий на основе выбранного месяца?

(На самом деле я пытался выполнить цикл обработки данных и успешно вернуть одно совокупное значение, но я не уверен, возможно ли вернуть подмножество результата данных

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

)

Ответ №1:

Я думаю, вы пытаетесь использовать find() цикл. В вашем случае:

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

По сути, вы просматриваете allData (все месяцы), чтобы найти, какой из них в точности равен inputMonth . Поскольку вы сохраняете его в matchedMonth , вы можете воспроизводить все, что захотите (переход к компоненту и т.д.).

Комментарии:

1. Не совсем то, что мне нужно, но ваш ответ напоминает мне, что результат данных на самом деле просто массив, поэтому я могу манипулировать им с помощью метода массива javascript, чтобы получить все, что я хочу, спасибо