<script>
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 sontanonymous
etuse-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 sontauto
(par défaut),high
oulow
.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 propasync
.
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> ); }
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> ); }