Как запрашивать призматические срезы и возвращать данные из каждого среза

Я пытаюсь использовать отладчик Gatsby / ___ graphq, а файл README для призматический источник Гэтсби говорит, что вы можете возвращать срезы. Итак, ниже я возвращаю фрагмент с именем PrismicProductBodySteps.

{
  allPrismicHomePage {
        edges {
          node {
        data {
          seo_title
          body {
            __typename
            ... on PrismicProductBodySteps {
              }
            }
          }
        }
       }
    }
  }
}

Может кто-нибудь объяснить мне, что ... на PrismicProductBodySteps означает?

Я видел это в качестве примера в компоненте Gatsby.

body {
  ... on PrismicProductsBodySteps {
    ...ProductStepsFragment
}

Может ли кто-нибудь объяснить мне, что означает ... ProductStepsFragment?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
815
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

PrismicProductBodySteps - это имя пользовательского типа узла, представляющее динамическую серию блоков содержимого. Это имя типа настраиваемого узла взято из модели данных Prismic; ваш, скорее всего, будет другим.

Согласно документации gatsby-source-prismic, использование имен пользовательских типов узлов требует, чтобы вы сначала выяснили, что они собой представляют:

The easiest way to get the type of nodes is to use the /___graphql debugger and run the below query (adjust the document type and field name).

{
  allPrismicPage {
    edges {
      node {
        id
        data {
          body {
            __typename
          }
        }
      }
    }
  }
}

Если у вас есть имя настраиваемого типа узла, вы можете использовать фрагмент GraphQL для извлечения данных, специфичных для каждого фрагмента. Опять же, это будет зависеть от того, как фрагменты определены в вашей модели данных, но это будет выглядеть примерно так:

{
  allPrismicHomePage {
    edges {
      node {
        data {
          seo_title
          body {
            __typename
            ... on PrismicYourContentBlockOne {
              text {
                html
              }
            }
            ... on PrismicYourContentBlockTwo {
              text {
                html
              }
            }
            ... on PrismicYourContentBlockThree {
              text {
                html
              }
            }
          }
        }
      }
    }
  }
}

Спасибо @staypuftman, так что я представляю вам пример, когда фрагмент f Eat будет PrismicYourContentBlockOne?

me-me 24.08.2018 14:18

Также в моем случае что делает body {... on PrismicProductsBodySteps {... ProductStepsFragment}. Иметь в виду. Я предполагаю, что PrismicProductsBodySteps - это фрагмент, но если это так, то что такое ... productStepsFragment.

me-me 24.08.2018 14:21
productStepsFragments - это объект, создаваемый настраиваемым типом узла PrismicProductsBodySteps (оба они настраиваются для вашей модели данных). ...productStepsFragment использует синтаксис распространения ES6, который в основном вызывает и разрушает объект одновременно.
serraosays 24.08.2018 14:39

Другой способ подумать об этом - представить свою модель данных серверной части как интерфейс администратора. Вероятно, в нем есть раздел (это будет PrismicProductsBodySteps). В вашем админке вы можете сделать столько из них, сколько захотите - каждый создает свой собственный набор данных, представленных productStepsFragment.

serraosays 24.08.2018 14:41

Спасибо за отличное объяснение!

me-me 26.08.2018 21:04

productStepsFragment может иметь любое имя, если вы используете то же имя в своем компоненте, верно? Только PrismicProductsBodySteps уникален для призмы, а не имя фрагмента?

me-me 26.08.2018 23:17

Что ж, и фрагмент productStepsFragment graphQL, и имена пользовательских типов узлов PrismicProductsBodySteps взяты из модели данных, которую вы настроили на Prismic. Они следуют шаблону, который кажется, но у вас есть концепция: какое бы имя вы ни дали модели данных, оно будет передаваться вашему компоненту.

serraosays 27.08.2018 03:04

Другие вопросы по теме