Откуда берется переменная slug в запросе gatsby graphql? - PullRequest
0 голосов
/ 11 июня 2019

Мы создаем слаг-узел в gatsby-node.js.Затем мы создаем createPage

  const posts = result.data.allMarkdownRemark.edges
  posts.forEach(({ node: post }) => {
    createPage({
      path: `posts${post.fields.slug}`,
      component: PostTemplate,
      context: {
        slug: post.fields.slug,
        testingSomething: "this is a test",
      },
    })
  })

В шаблоне мы запускаем что-то вроде этого.

const PostTemplate = ({ data: post }) => {
  return ( ...)  }

export const query = graphql`
  query($slug: String!) {
    markdownRemark(fields: { slug: { eq: $slug } }) {
      ...
  }
`
export default PostTemplate

Как graphql узнает, что есть слаг?Если это что-то вроде this.props.pageContext.slug хорошо, но что происходит в тайне?

Как заполняется переменная $slug?

1 Ответ

1 голос
/ 11 июня 2019

Чтобы добавить переменные в запросы компонентов страницы, передайте их в объекте контекста при создании страниц.

Переменные запроса

const posts = result.data.allMarkdownRemark.edges
posts.forEach(({ node: post }) => {
  createPage({
    path: `posts${post.fields.slug}`,
    component: PostTemplate,
    context: {
      slug: post.fields.slug,
      testingSomething: "this is a test",
    },
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...