📓
【react-helmet-async】Reactでページタイトルを設定する方法
はじめに
現在Reactのキャッチアップのため簡単な掲示板アプリを作っています。
Next.jsなどを使えばページタイトルを簡単に設定することができますが、
Reactでページタイトルを設定するための手順を調べる機会があったので備忘録として整理します。
Reactバージョン |
---|
18.3.1 |
目的
ルーティングしたページ毎にタイトルをつけます。
HTMLの<head>タグ内にある<title>タグで囲むやつをReactでどうやるの?ってやつです。
結論
-
react-helmet-async
を使用することで、各ページに個別の<title>
タグを設定することができます。 - 各ページの
Helmetコンポーネント
内で<title>
を指定することで、そのページのタイトルを変更できます。
手順
react-helmet-async
のインストール
1. まず、 react-helmet-async
をプロジェクトにインストールします。
npm install react-helmet-async
HelmetProvider
でアプリケーションをラップする
2. HelmetProvider
を使用してアプリケーション全体をラップする必要があります。
エントリポイントになるファイルで行います。
import React from "react";
import ReactDOM from "react-dom";
import { HelmetProvider } from "react-helmet-async"; // <- インポートする
import App from "./App";
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<HelmetProvider>
<App />
</HelmetProvider>
</React.StrictMode>
);
3. 各ページでタイトルを設定する
各ページコンポーネントで Helmetコンポーネント
を使用してタイトルを設定します。
import { Helmet } from "react-helmet-async"; // <- インポートする
const Home = () => {
return (
<>
<Helmet>
<title>ホーム | React掲示板</title> // <- HTMLの<head>タグに設定するのと同じ
</Helmet>
<div>
<h1>React掲示板へようこそ</h1>
</div>
</>
);
};
export default Home;
他のページでも同様に、 <Helmet>
内に <title>
タグを記述してページタイトルを設定します。
さいごに
Next.jsを使えば直感的にページタイトルを変更ができますが、素のReactだと一手間必要ですね🙄
各ページそれぞれ独自のタイトル設定することで、SEOやUX向上につながると思うので設定はしておきたいところです。
参考
Discussion