Reactのクッキー同意:スクリプトを確実に止めるバナー

Reactのクッキー同意バナー

Reactのクッキー同意:スクリプトを制御するバナーの作り方 | We.Inc

Reactでクッキー同意バナーを作る方法。選択を保存し、同意後にのみアナリティクスを読み込み、Consent Modeの更新を送信します。react-cookie-consentパッケージのpropsも紹介します。

訪問者の選択をReactのstateに保持し、ファーストパーティのクッキーかブラウザーストレージに保存し、該当するカテゴリーが許可された場合にだけアナリティクスや広告のスクリプトを描画します。小さなフックとバナーコンポーネント1つで対応できます。パッケージを使いたい場合は、react-cookie-consentが拒否ボタン、クッキー名、有効期限のpropsを備えた既製のバナーを提供しています。

Reactサイトに同意機能を追加する2つの方法

同意バナーで難しいのは画面上の枠ではなく、訪問者が同意する前に必須でないものが一切実行されないようにすることです。Reactではこれはstateの問題です。選択についての唯一の情報源を持ち、コンポーネントはscriptタグを挿入する前にそれを確認します。下のライブデモはまさにそれを行っているので、同意するまでアナリティクスの読み込みがオフのままであることを確認できます。

よくある質問

react-cookie-consentはスクリプトをブロックしてくれますか?

いいえ。READMEによると、このパッケージは訪問者の回答をクッキーに保存し、onAcceptまたはonDeclineを呼び出すバナーです。アナリティクスを読み込むかどうかは引き続き自分で制御する必要があります。たとえば、スクリプトを追加する前にgetCookieConsentValueを確認します。

react-cookie-consentに拒否ボタンを追加するには?

enableDeclineButton propを設定します。デフォルトはfalseです。ボタンのテキストはデフォルトで"I decline"で、declineButtonTextで変更でき、押されたときにonDeclineが実行されます。

訪問者が選択を変更できるようにするには?

自作のフックなら、保存済みの値を消去すればバナーが戻ります。パッケージの場合はresetCookieConsentValueを呼び出します。クッキー名をデフォルトから変更した場合は、バナーに指定したのと同じ名前を渡してください。

同意はクッキーとブラウザーストレージのどちらに保存すべきですか?

ブラウザー側ではどちらでも機能します。クッキーはサーバーからも読めるため、どのタグを出力するかをサーバーが決める場合に便利です。ブラウザーストレージなら値がリクエストごとに送信されません。選択そのものを記憶する目的であれば、どちらも認められています。

ReactではConsent Modeの呼び出しをどこに置けばよいですか?

gtagのconsent defaultは、Reactの外、HTMLのhead内でGoogleタグより前に置き、最初に実行されるようにします。gtag('consent', 'update', ...)はReact内の同意ハンドラーから呼び出します。

隠すより止めるべき理由

バナーのテスト

自作する:フック、バナー、制御されたスクリプト

小さな3つの部品です。ライブラリーは使わず、React 18でも19でも動作し、上のデモと同じ仕組みです。

useConsentフック

クライアントで保存済みの選択を一度だけ読み込み、変更のたびに保存して通知します。

ConsentBannerコンポーネント

同意と拒否のボタンが並び、カテゴリーのチェックボックスは未チェックで始まります。

同意後にのみスクリプトを読み込む

scriptタグはカテゴリーが許可されたときにだけ作成されるため、拒否された場合はタグ自体が存在しません。

react-cookie-consentパッケージを使う

npm install react-cookie-consentでインストールします。以下は、2026年10月時点でREADMEに記載されているpropsとヘルパー、およびそのデフォルト値です。

react-cookie-consentのpropsとデフォルト値

拒否ボタン付きのバナー

同意するとアナリティクスを読み込み、拒否すると任意のものは何も読み込みません。初回読み込み時の確認で再訪問者にも対応します。

ライブデモ:スクリプトを制御する同意バナー

架空のWebサイト

同意いただいた場合にのみ、アナリティクスと広告にクッキーを使用します。

すべて同意

すべて拒否

選択する

選択を保存

アナリティクス

広告

必須(常にオン)

読み込まれるもの

{c}:スクリプトを追加済み

{c}:ブロック中

まだ選択されていないため、任意のものは何も読み込まれません。

クッキー設定

送信されたConsent Modeの更新

まだありません。

このデモはこのブラウザー内でのみ選択を記憶します。どこにも送信されません。

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る