#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)
}