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