preload
preload
vous permet de charger en avance une ressource telle qu’une feuille de styles, une fonte ou un script extérieurs que vous avez l’intention d’utiliser.
preload("https://example.com/font.woff2", { as: "font" });
Référence
preload(href, options)
Pour précharger une ressource, appelez la fonction preload
de react-dom
.
import { preload } from 'react-dom';
function AppRoot() {
preload("https://example.com/font.woff2", { as: "font" });
// ...
}
Voir d’autres exemples plus bas.
La fonction preload
suggère au navigateur de commencer à télécharger une ressource donnée, ce qui peut faire gagner du temps.
Paramètres
href
: une chaîne de caractères. L’URL de la ressource que vous souhaitez télécharger.options
: un objet. Il contient les propriétés suivantes :as
: une chaîne de caractères obligatoire. Le type de la ressource. Les valeurs possibles sontaudio
,document
,embed
,fetch
,font
,image
,object
,script
,style
,track
,video
etworker
.precedence
: une chaîne de caractères. Indique à React où placer le nœud DOM<style>
par rapport aux autres présents dans le<head>
du document, ce qui détermine quelle feuille de styles a priorité sur quelle autre. La valeur peut être (par ordre de précédence)"reset"
,"low"
,"medium"
ou"high"
.crossOrigin
: une chaîne de caractères. La politique CORS à utiliser. Les valeurs possibles sontanonymous
etuse-credentials
. Elle est obligatoire lorsqueas
vaut"fetch"
.referrerPolicy
: une chaîne de caractères. L’en-tête Referrer à envoyer lors du chargement. Les valeurs possibles sontno-referrer-when-downgrade
(par défaut),no-referrer
,origin
,origin-when-cross-origin
ouunsafe-url
.integrity
: une chaîne de caractères. Une empreinte cryptographique de la ressource afin de vérifier son authenticité.type
: une chaîne de caractères. Le type MIME de la ressource liée.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.fetchPriority
: une chaîne de caractères. Suggère une priorité relative pour le chargement de la ressource. Les valeurs possibles sontauto
(par défaut),high
oulow
.imageSrcSet
: une chaîne de caractères. À n’utiliser que pouras: "image"
. Indique le jeu de sources de l’image.imageSizes
: une chaîne de caractères. À n’utiliser que pouras: "image"
. Indique les tailles de l’image.
Valeur renvoyée
preload
ne renvoie rien.
Limitations
- Plusieurs appels équivalents à
preload
ont le même effet qu’un unique appel. Des appels àpreload
sont considérés équivalents selon les règles que voici :- Deux appels sont équivalents s’ils ont le même
href
, sauf si : - L’option
as
vautimage
, auquel cas les deux appels sont équivalents s’ils ont les mêmeshref
,imageSrcSet
etimageSizes
.
- Deux appels sont équivalents s’ils ont le même
- Côté client, vous pouvez appeler
preload
n’importe où : lors du rendu d’un composant, dans un Effet, dans un gestionnaire d’événement, etc. - Lors d’un rendu côté serveur ou du rendu de Composants Serveur,
preload
n’a d’effet que si vous l’appelez lors du rendu d’un composant ou dans une fonction asynchrone issue du rendu d’un composant. Tout autre appel sera ignoré.
Utilisation
Précharger lors du rendu
Appelez preload
lors du rendu d’un composant si vous savez que ses enfants auront besoin de charger une ressource spécifique.
Exemple 1 sur 4 · Précharger un script
import { preload } from 'react-dom';
function AppRoot() {
preload("https://example.com/script.js", { as: "script" });
return ...;
}
Si vous souhaitez que le navigateur évalue la ressource immédiatement après chargement (plutôt que simplement le charger), utilisez plutôt preinit
. Si vous souhaitez charger un module ESM, utilisez preloadModule
.
Précharger dans un gestionnaire d’événement
Appelez preload
depuis un gestionnaire d’événement avant de passer à une page ou un état qui auront besoin de ressources extérieures. Ça permet de déclencher le processus plus tôt que si vous l’appeliez au sein de la nouvelle page ou suite au nouvel état.
import { preload } from 'react-dom';
function CallToAction() {
const onClick = () => {
preload("https://example.com/wizardStyles.css", { as: "style" });
startWizard();
}
return (
<button onClick={onClick}>Démarrer l’assistant</button>
);
}