A Gatsby egy statikus webhely-keretrendszer, amely a Reacton alapul.
Használhatjuk statikus webhelyek létrehozására külső adatforrásokból és így tovább.
Ebben a cikkben megvizsgáljuk, hogyan hozhat létre webhelyet a Gatsby segítségével.
Lekérdezés a useStaticQuery Hook segítségével
A useStaticQuery
hook segítségével lekérdezhetünk adatokat.
Például írhatjuk:
gatsby-config.js
module.exports = { siteMetadata: { title: "My Homepage", description: "This is where I write my thoughts.", }, }
src/pages/index.js
import React from "react" import { graphql, useStaticQuery } from 'gatsby' export default function Home() { const data = useStaticQuery(graphql` query HeaderQuery { site { siteMetadata { title } } } `) return ( <header> <h1>{data.site.siteMetadata.title}</h1> </header> ) }
A webhely metaadatai itt vannak: gatsby-config.js
.
Ezután lekérdezhetjük őket az index.js
fájlban.
A GraphQL lekérdezésünket a useStaticQuery
hookba továbbítjuk.
És ez visszaadja a szükséges adatokat.
Ezután megjelenítjük a címet a JSX-ben.
A useStaticQuery
horoggal saját horgokat készíthetünk.
Például írhatjuk:
import React from "react" import { graphql, useStaticQuery } from 'gatsby' const useSiteMetadata = () => { const { site } = useStaticQuery( graphql` query SiteMetaData { site { siteMetadata { title description } } } ` ) return site.siteMetadata } export default function Home() { const { title, description } = useSiteMetadata() return ( <header> <h1>{title}</h1> <h1>{description}</h1> </header> ) }
A useStaticQuery
horgot a useSiteMetadata
horogban használtuk.
Visszaadjuk a siteMetadata
értéket, és ezt használjuk a gatsby-config.js
metaadatainak title
és description
tulajdonságainak megjelenítésére.
GraphQL Fragments
A GraphQL töredékek a lekérdezés újrafelhasználható részei.
Töredék létrehozásához a fragment
kulcsszót használjuk.
Például írhatjuk:
import React from "react" import { graphql } from 'gatsby' export const query = graphql` fragment SiteInformation on Site { siteMetadata { title description } } query { site { ...SiteInformation } } ` export default function Home({ data }) { return ( <div> <h1>{data.site.siteMetadata.title}</h1> <p>{data.site.siteMetadata.siteDescription}</p> </div> ) }
A fragment
értéket hozzáadjuk a query
GraphQL lekérdezési objektumunkhoz.
A ...
operátort használjuk a töredék alkalmazására a lekérdezésben.
Ezután az eredményt úgy jelenítjük meg, hogy megkapjuk az adatokat a data
propból.
Csigák létrehozása oldalakhoz
Csigákat készíthetünk oldalainkhoz.
Például írhatjuk:
gatsby-node.js
const { createFilePath } = require(`gatsby-source-filesystem`) exports.onCreateNode = ({ node, getNode, actions }) => { const { createNodeField } = actions if (node.internal.type === `MarkdownRemark`) { const slug = createFilePath({ node, getNode, basePath: `pages` }) createNodeField({ node, name: `slug`, value: slug, }) } }
Ellenőrizzük a csomópont típusát.
Ha 'MarkdownRemark'
, akkor a slug-ot a createFilePath
metódussal hozzuk létre.
Ezután hívjuk a createNodeField
-t, hogy hozzáadjuk a slug
mezőt a lekérdezésünkhöz.
Ezután a GraphiQL-ben lekérdezhetjük a következő írással:
{ allMarkdownRemark { edges { node { fields { slug } } } } }
Ezután egy eredményt kell kapnunk, amely így néz ki:
{ "data": { "allMarkdownRemark": { "edges": [ { "node": { "fields": { "slug": "/post/" } } } ] } }, "extensions": {} }
visszatért.
Következtetés
A useStaticQuery
hook segítségével lekérdezhetünk adatokat Gatsby projektünkben.
Emellett töredékeket és csigákat is létrehozhatunk projektünkben.