preloadModule
Примечание
Фреймворки на основе React часто обрабатывают загрузку ресурсов за вас, поэтому вам, возможно, не придётся вызывать этот API самостоятельно. Обратитесь к документации вашего фреймворка для получения подробностей.
preloadModule позволяет вам заранее загрузить модуль ESM, который, как ожидается, вы будете использовать.
preloadModule("https://example.com/module.js", {as: "script"});
Ссылка
preloadModule(href, options)
Чтобы предварительно загрузить модуль ESM, вызовите функцию preloadModule из react-dom.
import { preloadModule } from 'react-dom';
function AppRoot() {
preloadModule("https://example.com/module.js", {as: "script"});
// ...
} См. дополнительные примеры ниже.
Функция preloadModule даёт браузеру подсказку, что он должен начать загрузку указанного модуля, что может сэкономить время.
Параметры
-
href: строка. URL модуля, который вы хотите загрузить. -
options: объект. Он содержит следующие свойства:-
as: обязательная строка. Она должна быть'script'. -
crossOrigin: строка. Политика CORS для использования. Возможные значения —anonymousиuse-credentials. -
integrity: строка. Криптографическое хеш-значение модуля для проверки его подлинности. -
nonce: строка. Криптографический nonce для разрешения работы модуля при использовании строгой политики Content Security Policy.
-
Возвращаемое значение
preloadModule ничего не возвращает.
Ограничения
- Несколько вызовов
preloadModuleс одинаковымhrefимеют тот же эффект, что и один вызов. - В браузере вы можете вызвать
preloadModuleв любой ситуации: при отрисовке компонента, в эффекте, в обработчике событий и так далее. - При рендеринге на стороне сервера или при рендеринге Server Components,
preloadModuleимеет эффект только если вы вызываете его во время отрисовки компонента или в асинхронном контексте, происходящем от отрисовки компонента. Любые другие вызовы будут проигнорированы.
Использование
Предварительная загрузка при отрисовке
Вызовите preloadModule при отрисовке компонента, если вы знаете, что он или его дочерние элементы будут использовать определённый модуль.
import { preloadModule } from 'react-dom';
function AppRoot() {
preloadModule("https://example.com/module.js", {as: "script"});
return ...;
} Если вы хотите, чтобы браузер начал выполнение модуля немедленно (а не только загрузку), используйте preinitModule вместо этого. Если вы хотите загрузить скрипт, который не является модулем ESM, используйте preload.
Предварительная загрузка в обработчике событий
Вызовите preloadModule в обработчике событий перед переходом на страницу или состояние, где модуль потребуется. Это запустит процесс раньше, чем если вы вызовете его во время отрисовки новой страницы или состояния.
import { preloadModule } from 'react-dom';
function CallToAction() {
const onClick = () => {
preloadModule("https://example.com/module.js", {as: "script"});
startWizard();
}
return (
<button onClick={onClick}>Start Wizard</button>
);
}
© 2013–present Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://react.dev/reference/react-dom/preloadModule