preinitModule
preinitModule
vous permet de charger et dâĂ©valuer en avance un module ESM.
preinitModule("https://example.com/module.js", { as: "script" });
Référence
preinitModule(href, options)
Pour préinitialiser un module ESM, appelez la fonction preinitModule
de react-dom
.
import { preinitModule } from 'react-dom';
function AppRoot() {
preinitModule("https://example.com/module.js", { as: "script" });
// ...
}
Voir dâautres exemples plus bas.
La fonction preinitModule
suggĂšre au navigateur de commencer Ă tĂ©lĂ©charger puis dâĂ©valuer un module donnĂ©, ce qui peut faire gagner du temps. Les modules que vous passez Ă preinitModule
sont exĂ©cutĂ©s dĂšs quâils ont terminĂ© leur chargement.
Parameters
href
: une chaĂźne de caractĂšres. LâURL du module que vous souhaitez tĂ©lĂ©charger et Ă©valuer.options
: un objet. Il contient les propriétés suivantes :as
: une chaßne de caractÚres obligatoire. La seule valeur autorisée estscript
.crossOrigin
: une chaĂźne de caractĂšres. La politique CORS Ă utiliser. Les valeurs possibles sontanonymous
etuse-credentials
.integrity
: une chaßne de caractÚres. Une empreinte cryptographique de la ressource afin de vérifier son authenticité.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.
Valeur renvoyée
preinitModule
ne renvoie rien.
Limitations
- Plusieurs appels Ă
preinitModule
avec le mĂȘmehref
ont le mĂȘme effet quâun unique appel. - CĂŽtĂ© client, vous pouvez appeler
preinitModule
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,
preinitModule
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éinitialisation lors du rendu
Appelez preinitModule
lors du rendu dâun composant si vous savez que ses enfants auront besoin de charger un module spĂ©cifique, et que vous acceptez dâĂ©valuer ce module immĂ©diatement aprĂšs son chargement.
import { preinitModule } from 'react-dom';
function AppRoot() {
preinitModule("https://example.com/module.js", { as: "script" });
return ...;
}
Si vous souhaitez que le navigateur tĂ©lĂ©charge mais nâĂ©value pas le module immĂ©diatement, utilisez plutĂŽt preload
. Si vous souhaitez charger et Ă©valuer un script qui nâest pas un module ESM, utilisez preinit
.
PrĂ©initialisation dans un gestionnaire dâĂ©vĂ©nement
Appelez preinitModule
depuis un gestionnaire dâĂ©vĂ©nement avant de passer Ă une page ou un Ă©tat qui auront besoin de modules. Ă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 { preinitModule } from 'react-dom';
function CallToAction() {
const onClick = () => {
preinitModule("https://example.com/module.js", { as: "script" });
startWizard();
}
return (
<button onClick={onClick}>DĂ©marrer lâassistant</button>
);
}