Vai al contenuto

Lingua

Menu della documentazione

SDK React

Usa Cookiesh nelle app React e Next.js: CookieshProvider, l'hook useConsent, il componente ConsentGate, il rendering lato server e la sincronizzazione degli utenti.

Ultimo aggiornamento: 29 ottobre 2026

L’SDK React dà ai componenti accesso diretto al consenso del visitatore. I componenti si aggiornano quando la scelta cambia, così non devi mai leggere i cookie né ricaricare la pagina. Funziona con React 18 e versioni successive, comprese le app Next.js, Remix e Vite.

Installazione

npm install @cookiesh/react

Dietro le quinte, l’SDK usa il tag script di Cookiesh. Caricalo il prima possibile, come mostrato nella guida rapida, poi racchiudi l’app in CookieshProvider.

CookieshProvider

import { CookieshProvider } from '@cookiesh/react';

export function App({ children }: { children: React.ReactNode }) {
  return (
    <CookieshProvider siteId="ck_live_8f2a91" userId={session?.user.id}>
      {children}
    </CookieshProvider>
  );
}
Prop Tipo Descrizione
siteId string Il tuo Site ID. Facoltativo se il tag script imposta già data-site-id.
userId string | undefined Collega il consenso a un utente con login, così lo segue su tutti i dispositivi. Passare undefined dopo la disconnessione chiama reset().
language string Impone la lingua del banner.
onChange (state: ConsentState) => void Viene chiamata dopo ogni nuova scelta.

useConsent

useConsent() restituisce lo stato attuale e le azioni per modificarlo:

import { useConsent } from '@cookiesh/react';

function PrivacySettingsLink() {
  const { openPreferences } = useConsent();
  return <button onClick={openPreferences}>Impostazioni privacy</button>;
}

L’oggetto restituito contiene:

Campo Tipo Descrizione
ready boolean false finché lo stato del consenso non è noto
necessary, preferences, analytics, marketing boolean Il valore attuale di ogni categoria
method string Come si è arrivati allo stato attuale (vedi l’API JavaScript)
acceptAll, rejectAll () => Promise<ConsentState> Salvano una scelta per tutte le categorie
setConsent (choices) => Promise<ConsentState> Salva una scelta per alcune categorie
showBanner, openPreferences () => void Aprono l’interfaccia di Cookiesh

ConsentGate

ConsentGate esegue il rendering dei propri figli solo quando tutte le categorie indicate sono autorizzate, altrimenti mostra un fallback:

import { ConsentGate } from '@cookiesh/react';

<ConsentGate category="marketing" fallback={<VideoPlaceholder />}>
  <YouTubeEmbed id="dQw4w9WgXcQ" />
</ConsentGate>

Passa un array, ad esempio category={['analytics', 'marketing']}, per richiedere più categorie.

Rendering lato server

La scelta del visitatore si trova nel suo browser, quindi non è nota mentre una pagina viene generata sul server. Durante il rendering lato server e il primo rendering sul client, ready è false e tutte le categorie tranne necessary sono false. Per questo i contenuti che dipendono dal consenso vengono visualizzati dopo l’idratazione e nulla viene eseguito prima del consenso.

Per evitare spostamenti del layout, assegna a ConsentGate un fallback delle stesse dimensioni del contenuto che sostituisce. Nell’App Router di Next.js, i componenti che chiamano useConsent() devono essere client component ('use client').

Test

Nei test unitari, racchiudi i componenti in CookieshTestProvider per controllare lo stato senza caricare lo script:

import { render, screen } from '@testing-library/react';
import { CookieshTestProvider } from '@cookiesh/react/testing';

render(
  <CookieshTestProvider consent={{ analytics: true, marketing: false }}>
    <Dashboard />
  </CookieshTestProvider>,
);