preload¶
Canary
Функция preload
в настоящее время доступна только в каналах React Canary и experimental. Подробнее о каналах выпуска React здесь.
Фреймворки на основе React часто обрабатывают загрузку ресурсов за вас, поэтому вы можете не вызывать этот API самостоятельно. За подробностями обращайтесь к документации вашего фреймворка.
preload
позволяет вам заранее получить ресурс, такой как таблица стилей, шрифт или внешний скрипт, который вы ожидаете использовать.
1 |
|
Описание¶
preload(href, options)
¶
Чтобы предварительно загрузить ресурс, вызовите функцию preload
из react-dom
.
1 2 3 4 5 6 7 8 |
|
Функция preload
дает браузеру подсказку о том, что ему следует начать загрузку данного ресурса, что позволяет сэкономить время.
Параметры
href
: строка. URL-адрес ресурса, который вы хотите загрузить.options
: объект. Он содержит следующие свойства:as
: обязательная строка. Тип ресурса. Его возможные значения:audio
,document
,embed
,fetch
,font
,image
,object
,script
,style
,track
,video
,worker
.crossOrigin
: строка. Политика CORS, которую следует использовать. Возможные значения:anonymous
иuse-credentials
. Требуется, если дляas
установлено значение"fetch"
.referrerPolicy
: строка. Заголовок Referrer header, который следует отправлять при выборке. Возможные значения:no-referrer-when-downgrade
(по умолчанию),no-referrer
,origin
,origin-when-cross-origin
, иunsafe-url
.integrity
: строка. Криптографический хэш ресурса для проверки его подлинности.type
: строка. MIME-тип ресурса.nonce
: строка. Криптографический nonce для разрешения ресурса при использовании строгой политики безопасности содержимого.fetchPriority
: строка. Предлагает относительный приоритет для получения ресурса. Возможные значения:auto
(по умолчанию),high
иlow
.imageSrcSet
: строка. Используется только сas: "image"
. Указывает исходный набор изображения.imageSizes
: строка. Используется только сas: "image"
. Указывает размеры изображения.
Возвращаемое значение
preload
ничего не возвращает.
Ограничения
- Несколько эквивалентных вызовов
preload
имеют тот же эффект, что и один вызов. Вызовыpreload
считаются эквивалентными в соответствии со следующими правилами:- Два вызова эквивалентны, если у них одинаковый
href
, за исключением: - Если
as
имеет значениеimage
, то два вызова эквивалентны, если у них одинаковыеhref
,imageSrcSet
иimageSizes
.
- Два вызова эквивалентны, если у них одинаковый
- В браузере вы можете вызвать
preload
в любой ситуации: при рендеринге компонента, в эффекте, в обработчике событий и так далее. - При рендеринге на стороне сервера или при рендеринге серверных компонентов
preload
имеет эффект только в том случае, если вы вызываете его во время рендеринга компонента или в асинхронном контексте, возникающем при рендеринге компонента. Любые другие вызовы будут проигнорированы.
Использование¶
Предварительная загрузка при рендеринге¶
Вызовите preload
при рендеринге компонента, если вы знаете, что он или его дочерние компоненты будут использовать определенный ресурс.
Примеры предварительной загрузки¶
1. Предварительная загрузка внешнего скрипта
1 2 3 4 5 6 7 8 |
|
Если вы хотите, чтобы браузер начал выполнять скрипт немедленно (а не просто загрузил его), используйте preinit
. Если вы хотите загрузить модуль ESM, используйте preloadModule
.
2. Предварительная загрузка таблицы стилей
1 2 3 4 5 6 7 8 |
|
Если вы хотите, чтобы таблица стилей была вставлена в документ немедленно (это означает, что браузер начнет разбирать ее сразу, а не просто загрузит), используйте preinit
вместо этого.
3. Предварительная загрузка шрифта
1 2 3 4 5 6 7 8 9 10 11 |
|
Если вы предварительно загружаете таблицу стилей, разумно также предварительно загрузить все шрифты, на которые ссылается таблица стилей. Таким образом, браузер сможет начать загрузку шрифта до того, как загрузит и разберет таблицу стилей.
4. Предварительная загрузка изображения
1 2 3 4 5 6 7 8 9 10 11 |
|
При предварительной загрузке изображения параметры imageSrcSet
и imageSizes
помогают браузеру получить изображение правильного размера в соответствии с размерами экрана.
Предварительная загрузка в обработчике события¶
Вызовите preload
в обработчике события перед переходом на страницу или в состояние, где потребуются внешние ресурсы. Это позволит запустить процесс раньше, чем если бы вы вызвали его во время рендеринга новой страницы или состояния.
1 2 3 4 5 6 7 8 9 10 11 |
|
Источник — https://react.dev/reference/react-dom/preload