Запрос фрагмента Gatsby JS в компонент с DatoCMS

Я пытаюсь создать фрагмент и передать его компонентам. Данные поступают из datocms, и обычные запросы, такие как следующие, работают отлично

{
  datoCmsHomeIntro {
    introTitle: introTitleNode {
      markdown: childMarkdownRemark {
        html
      }
    }
    introImage {
      url
    }
  }
}

Я прочитал документы Гэтсби по фрагментам и некоторым другим примерам, но просто не могу заставить его работать.

Прямо сейчас я получил следующее:

в макетах / index.js

export const introFragmentQuery = graphql`
fragment intro on DatoCmsHomeIntro {
  introTitle: introTitleNode {
    markdown: childMarkdownRemark {
      html
    }
  }
  introImage {
    url
  }
}
`

и в моем компоненте:

export const pageQuery = graphql`
  query IntroQuery {
    allDatoCmsHomeIntro {
      edges {
        node {
          ...intro
        }
      }
    }
}
`

Мне явно чего-то не хватает, поэтому любые указатели будут очень признательны.

Вы получаете сообщение об ошибке или data.allDatoCmsHomeIntro не определен?

coreyward 21.05.2018 17:41

Да, в основном, как бы я ни пытался внедрить это в интерфейс, всегда что-то кажется неопределенным. Также теперь, перечитывая документы на следующее утро, я понимаю, что все должно быть наоборот. Таким образом, фактический запрос внутри компонентов и запрос, вызывающий его, фрагментируют внутри макета или страницы. Это верно. Вроде сбит с толку всем этим;)

Martin Conde 22.05.2018 02:55

Ваши запросы graphql компилируются статически; т.е. они извлекаются из JS и заменяются данными перед выполнением JS. Гэтсби использует только ваш начальный запрос «страницы». Вы можете разместить фрагменты в другом месте и использовать их на своей «странице», но запросы верхнего уровня в этих других файлах не будут выполняться для «страницы», которую вы загружаете. Есть смысл?

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

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