📓
【react-helmet-async】Reactでページタイトルを設定する方法
はじめに
現在Reactのキャッチアップのため簡単な掲示板アプリを作っています。
Next.jsなどを使えばページタイトルを簡単に設定することができますが、
Reactでページタイトルを設定するための手順を調べる機会があったので備忘録として整理します。
| Reactバージョン |
|---|
| 18.3.1 |
目的

ルーティングしたページ毎にタイトルをつけます。
HTMLの<head>タグ内にある<title>タグで囲むやつをReactでどうやるの?ってやつです。
結論
-
react-helmet-asyncを使用することで、各ページに個別の<title>タグを設定することができます。 - 各ページの
Helmetコンポーネント内で<title>を指定することで、そのページのタイトルを変更できます。
手順
1. react-helmet-async のインストール
まず、 react-helmet-async をプロジェクトにインストールします。
npm install react-helmet-async
2. HelmetProvider でアプリケーションをラップする
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