[Gatsby] useStaticQuery(정적 쿼리 사용)Frontend/React2023. 1. 30. 22:58
Table of Contents
반응형
useStaticQuery
useStaticQuery는 빌드 시 리액트 훅을 사용하여 Gatsby의 GraphQL 데이터 계층을 쿼리 하는 기능을 제공합니다. 이를 통해 React 컴포넌트는 구문 분석, 평가 및 컴포넌트에 삽입될 GraphQL 쿼리를 통해 데이터를 검색할 수 있습니다.
useStaticQuery 훅은 모든 컴포넌트 또는 페이지에서 사용할 수 있습니다.
const data = useStaticQuery(graphql`
query HeaderQuery {
site {
siteMetadata {
title
}
}
}
`);
사용 방법
TypeScript를 사용하고 gatsby-config.ts
파일에서 GraphQL 타입 생성에 관한 항목인 graphqlTypegen
값이 true로 설정되어 있다면 Gatsby가 쿼리를 읽고서 자동적으로 맞는 타입을 생성합니다.
gatsby-types.d.ts
파일을 열어서 보면 정의한 쿼리를 읽고 자동 타입 생성을 해버렸음을 확인 할 수 있습니다.
// useStaticQuery 정의
const data = useStaticQuery(graphql`
query SeoData {
site {
siteMetadata {
title
}
}
}
`);
// gatsby-types.d.ts
type SeoDataQuery = { readonly site: { readonly siteMetadata: { readonly title: string | null } | null } | null };
이렇게 자동 타입이 생성되었다면 Queries
를 사용하여 SeoDataQuery
를 찾아 타입을 부여합니다. TypeScript 자동완성이 제공됩니다.
const data = useStaticQuery<Queries.SeoDataQuery>(
graphql`
query SeoData {
site {
siteMetadata {
title
}
}
}
`
);
console.log(data.site?.siteMetadata?.title);
전체 코드
GraphQL 쿼리를 통해 조회해서 Title를 설정하는 코드입니다.
import { graphql, useStaticQuery } from 'gatsby';
import React from 'react';
interface ISeoProps {
title: string;
}
export default function Seo({ title }: ISeoProps) {
const data = useStaticQuery<Queries.SeoDataQuery>(graphql`
query SeoData {
site {
siteMetadata {
title
}
}
}
`);
return (
<title>
{title} | {data.site?.siteMetadata?.title}
</title>
);
}
참고
반응형
'Frontend > React' 카테고리의 다른 글
React.js 살펴보기: 초보자 가이드 (0) | 2024.06.13 |
---|---|
[Gatsby] Page Query (0) | 2023.02.01 |
[Gatsby] Head API 사용 방법 (0) | 2023.01.26 |
[Gatsby] Layout Components (0) | 2023.01.18 |
[Gatsby] Routing (0) | 2023.01.14 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!