Получите массив всех существующих маршрутов страниц в Гэтсби

#javascript #html #reactjs #gatsby #server-side-rendering

Вопрос:

Я создаю 404 страницу в Гэтсби и хочу дать пользователю предложение по аналогичному имени пути, основанному на пути, по которому они перешли (которого не существует). Как мне получить массив всех существующих страниц на моем веб-сайте?

Ответ №1:

Гэтсби предоставляет информацию о каждой странице, о которой вы ей рассказываете (либо через pages папку, либо createPage через API), в виде поля GraphQL, называемого allSitePage . Я склонен создавать подобный крючок в большинстве своих проектов, поэтому получить эту информацию легко:

 import { graphql, useStaticQuery } from "gatsby"

const useInternalPaths = () => {
  const {
    pages: { nodes },
  } = useStaticQuery(graphql`
    {
      pages: allSitePage {
        nodes {
          path
        }
      }
    }
  `)

  return nodes.map(node => node.path)
}