<script>🌐 <script> – React - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - Cette fonctionnalitĂ© est disponible dans le dernier Canary - fr.react.dev

Canary (fonctionnalité expérimentale)

Les extensions de React à <script> ne sont actuellement disponibles que sur les canaux de livraison Canary et Expérimental de React. Dans les versions stables de React, <script> fonctionne comme le composant HTML natif du navigateur. Apprenez-en davantage sur les canaux de livraison React.

Le composant natif <script> du navigateur vous permet d’ajouter un script à votre document.

<script> alert("salut !") </script>

Référence

<script>

Pour ajouter un script dĂ©fini Ă  la volĂ©e ou extĂ©rieur Ă  votre document, utilisez le composant natif <script> du navigateur. Vous pouvez utiliser <script> depuis n’importe quel composant et React placera dans certains cas l’élĂ©ment DOM correspondant dans l’en-tĂȘte (head) du document et dĂ©doublonnera les scripts identiques.

<script> alert("salut !") </script>
<script src="script.js" />

Voir d’autres exemples plus bas.

Props

<script> prend en charge toutes les props communes aux éléments.

Il est censĂ© utiliser l’une ou l’autre des props chilren ou src.

  • children : une chaĂźne de caractĂšres. Le code source du script dĂ©fini Ă  la volĂ©e.
  • src : une chaĂźne de caractĂšres. L’URL d’un script extĂ©rieur.

L’élĂ©ment prend en charge d’autres props :

  • async : un boolĂ©en. Permet au navigateur de diffĂ©rer l’exĂ©cution du script jusqu’à ce que le reste du document ait Ă©tĂ© traitĂ© — c’est le comportement Ă  favoriser pour des raisons de performances.
  • crossOrigin : une chaĂźne de caractĂšres. La politique CORS Ă  utiliser. Les valeurs possibles sont anonymous et use-credentials.
  • fetchPriority : une chaĂźne de caractĂšres. SuggĂšre une prioritĂ© relative pour le chargement lorsque plusieurs scripts sont chargĂ©s en parallĂšle. Les valeurs possibles sont auto (par dĂ©faut), high ou low.
  • integrity : une chaĂźne de caractĂšres. Une empreinte cryptographique du script afin de vĂ©rifier son authenticitĂ©.
  • noModule : un boolĂ©en. DĂ©sactive le script dans les navigateurs qui ne prennent pas en charge les modules ES (ESM), ce qui permet de charger un script de secours pour ces navigateurs.
  • nonce : une chaĂźne de caractĂšres. Un nonce cryptographique autorisant la ressource dans le cadre d’une Politique de SĂ©curitĂ© de Contenu (CSP) stricte.
  • referrer : une chaĂźne de caractĂšres. Indique l’en-tĂȘte Referer Ă  envoyer lors du chargement du script et de toutes ressources que le script chargerait Ă  son tour.
  • type : une chaĂźne de caractĂšres. Indique si le script est un script classique, un module ES ou une import map.

Ces props dĂ©sactivement le traitement spĂ©cial des scripts de React :

  • onError : une fonction. AppelĂ©e lorsque le chargement du script Ă©choue.
  • onLoad : une fonction. AppelĂ©e lorsque le chargement du script est terminĂ©.

Ces props sont dĂ©conseillĂ©es pour une utilisation avec React :

  • blocking : une chaĂźne de caractĂšres. Si elle vaut "render", le navigateur attendra pour afficher la page que le script ait fini son chargement. React permet un contrĂŽle plus granulaire grĂące Ă  Suspense.
  • defer : une chaĂźne de caractĂšres. EmpĂȘche le navigateur d’exĂ©cuter le script tant que le chargement du document n’est pas terminĂ©. Ce fonctionnement est incompatible avec le streaming de Composants Serveur : prĂ©fĂ©rez la prop async.

Comportement spécifique de rendu

React peut déplacer les composants <script> dans le <head> du document et dédoublonner les scripts identiques.

Pour activer ces comportements, fournissez les props src et async={true}. React dĂ©doublonnera les scripts qui ont le mĂȘme src. La prop async doit ĂȘtre active pour permettre aux scripts d’ĂȘtre dĂ©placĂ©s sans risque.

Ce comportement a deux limitations :

  • React ignorera les changements Ă  ces props aprĂšs le rendu du script. (React produira un avertissement en dĂ©veloppement si ce cas survient.)
  • React est susceptible de laisser le script dans le DOM mĂȘme aprĂšs le dĂ©montage du composant qui l’a produit. (Ça n’a toutefois aucun impact dans la mesure oĂč les scripts ne sont exĂ©cutĂ©s qu’une fois : au moment de leur insertion dans le DOM.)

Utilisation

Exécuter un script extérieur

Si un composant dépend de certains scripts pour pouvoir fonctionner correctement, vous pouvez utiliser <script> au sein de ce composant. Cependant, le composant pourrait finaliser son commit avant que le script ait terminé son chargement. Vous pouvez démarrer un traitement une fois le script chargé en écoutant son événement load, par exemple au moyen de sa prop onLoad.

React dĂ©doublonnera les scripts ayant le mĂȘme src, et n’insĂšrera que l’un d’entre eux dans le DOM mĂȘme si plusieurs composants utilisent ce script.

import ShowRenderedHTML from './ShowRenderedHTML.js';

function Map({lat, long}) {
  return (
    <>
      <script async src="map-api.js" onLoad={() => console.log('script loaded')} />
      <div id="map" data-lat={lat} data-long={long} />
    </>
  );
}

export default function Page() {
  return (
    <ShowRenderedHTML>
      <Map />
    </ShowRenderedHTML>
  );
}

Remarque

Lorsque vous souhaitez utiliser un script, il peut ĂȘtre avantageux d’appeler la fonction preinit. Un tel appel suggĂšre au navigateur de commencer Ă  charger le script plus tĂŽt que lorsque vous vous contentez d’utiliser le composant <script>, par exemple en utilisant une rĂ©ponse HTTP Early Hints.

Exécuter un script défini à la volée

Pour exĂ©cuter un script dĂ©fini Ă  la volĂ©e, utilisez le composant <script> avec le code source Ă  l’intĂ©rieur. Les scripts dĂ©finis Ă  la volĂ©e ne sont pas dĂ©doublonnĂ©s ou dĂ©placĂ©s dans le <head> du document.

import ShowRenderedHTML from './ShowRenderedHTML.js';

function Tracking() {
  return (
    <script>
      ga('send', 'pageview');
    </script>
  );
}

export default function Page() {
  return (
    <ShowRenderedHTML>
      <h1>Mon site web</h1>
      <Tracking />
      <p>Bienvenue</p>
    </ShowRenderedHTML>
  );
}