Gatsbyがはじめての方は下記の記事も参考にしてください。
React製静的サイトジェネレーターGatsby使ってみた
インストール
下記コマンドでプラグインをインストールします。
react-helmetはReactのコンポーネントですが、それをGatsbyのプラグインで利用できるようにしたのがgatsby-plugin-react-helmetですね。
$ npm install --save gatsby-plugin-react-helmet react-helmet
プロジェクトルートにあるgatsby-config.js
を編集してこのプラグインを使えるようにします。
gatsby-config.js
module.exports = { plugins: [`gatsby-plugin-react-helmet`] }
これで準備完了。
使ってみる
試しにindexページに設定してみましょう。
page/index.js
import React from 'react' import Helmet from "react-helmet" export default () => ( <div> <Helmet htmlAttributes={{ lang: 'ja', }} title="Gastbyサンプル" meta={[ { name: 'description', content: 'このページはGastbyサンプルです。' } ]} /> </div> )
Helmetの部分はこんな感じにタグっぽく書いてもOKです。
<Helmet> <title>Gastbyサンプル</title> <meta name="description" content="このページはGastbyサンプルです。" /> <html lang="ja" /> </Helmet>
外部コンポーネント化
head要素は各ページで共通で使用する部分もあるのでHelmetの部分は外部コンポーネントにした方がいいですね。
例えばsrc/components/head.js
を下記のように作成してみます。
src/components/head.js
import React from 'react' import Helmet from "react-helmet" export default (props) => ( <Helmet htmlAttributes={{ lang: 'ja', }} title={ (props.title ? props.title + ' | ' : '') + "サイトタイトル" } meta={[ { name: 'description', content: props.description || 'Gastbyサンプル' } ]} /> )
あとはコンポーネントをインポートして配置するだけで使えます。
index.js
を下記のように編集してみましょう。
src/page/index.js
import React from 'react' import Head from '../components/head' export default () => ( <div> <Head /> </div> )
下層ページではpropsを設定して、細かく調節できます。
<Head title="自己紹介" description="自己紹介ページです。" />
以上、react-helmetの基本的な使い方がわかったと思いますが、react-helmetはスターターデーマによっては最初から組み込まれているのがあるので、基本的にはそちらを使用した方がいいかと思います。
gatsby-plugin-react-helmet