GraphQL - Gatsby. js - Реактивный компонент. Запрос с переменными / аргументами? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть React Component, который должен запрашивать данные. И я хочу передать аргументы / переменные в запрос. Но я не знаю, как это сделать.

Например. У меня есть эта карусель элементов блога, которая хочет запросить количество элементов х и количество смещений х (пропустить первое число х).

Это примерно то, что у меня сейчас. Но я не знаю, как передать переменные внутри запроса GraphQL

import React from "react"
import {graphql, useStaticQuery} from "gatsby";
import BlockCarousel from "../blockCarousel/blockCarousel";


const BlockCarouselBlog = ({block,data}) => {

  let queryArgs = {
    limit: 10,
    skip: 0
  };

  block.blocks = GetBlogItems(queryArgs);

  return (
    <BlockCarousel block={block} data={data} />
  )
};
export default BlockCarouselBlog



const GetBlogItems = (args) => {

    let data = useStaticQuery(graphql`
      query {
        allSanityBlog(
          sort: { fields: [_createdAt], order: DESC }
          limit: 10 // this needs the variable
          skip: 0 // this needs the variable
        ) {
          ... rest of the data
        }


      }
    `)

    if (data.allSanityBlog.edges)
      return data.allSanityBlog.edges

    return null;
  }

Вопрос

Как передать аргументы в запрос Gatsby GraphQL для компонента

1 Ответ

0 голосов
/ 08 марта 2020

Эта проблема является известным ограничением useStaticQuery Гэтсби, а не самого GraphQL.

GraphQL четко определяет способ использования переменных в запросе . Для этого необходимо выполнить 3 шага:

  1. Заменить значение c в query на $variableName
  2. Объявить $variableName как одну из переменных, принятых query
  3. Передача variableName: value в отдельный словарь переменных для транспорта c (обычно JSON)

В вашем случае я бы предложил получить аргументы и используйте строковую интерполяцию для создания запроса перед передачей в useStaticQuery() функцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...