preload
preload
memungkinkan Anda mengambil sumber daya seperti stylesheet, font, atau skrip eksternal yang ingin Anda gunakan.
preload("https://example.com/font.woff2", {as: "font"});
Referensi
preload(href, options)
Untuk memuat sumber daya, panggil fungsi preload
dari react-dom
.
import { preload } from 'react-dom';
function AppRoot() {
preload("https://example.com/font.woff2", {as: "font"});
// ...
}
Lihat contoh lainnya di bawah ini.
Fungsi preload
memberikan petunjuk kepada browser untuk mulai mengunduh sumber daya yang diberikan, yang dapat menghemat waktu.
Parameter
href
: sebuah string. URL sumber daya yang ingin Anda unduh.options
: sebuah objek. Ini berisi properti-properti berikut:as
: string yang diperlukan. Jenis sumber daya. Nilai yang memungkinkan adalahaudio
,document
,embed
,fetch
,font
,image
,object
,script
,style
,track
,video
,worker
.crossOrigin
: sebuah string. Kebijakan CORS yang akan digunakan. Nilai yang mungkin adalahanonymous
danuse-credentials
. Ini diperlukan ketikaas
disetel ke"fetch"
.referrerPolicy
: sebuah string. Referrer header yang akan dikirim saat fetching. Nilai yang memungkinkan adalahno-referrer-when-downgrade
(default),no-referrer
,origin
,origin-when-cross-origin
, danunsafe-url
.integrity
: sebuah string. Hash kriptografi sumber daya, untuk memverifikasi keasliannya.type
: sebuah string. Jenis MIME sumber daya.nonce
: sebuah string. Sebuah kriptografi nonce untuk mengizinkan sumber daya ketika menggunakan Content Security Policy yang ketat.fetchPriority
: sebuah string. Menyarankan prioritas relatif untuk mengambil sumber daya. Nilai yang memungkinkan adalahauto
(default),high
, danlow
.imageSrcSet
: sebuah string. Hanya untuk digunakan denganas: “image"
. Menentukan kumpulan sumber gambar.imageSizes
: sebuah string. Hanya untuk digunakan denganas: “image"
. Menentukan ukuran gambar.
Kembalian
preload
tidak mengembalikan apa pun.
Peringatan
- Beberapa panggilan setara ke
preload
memiliki efek yang sama dengan panggilan tunggal. Panggilan kepreload
dianggap setara menurut aturan berikut:- Dua pemanggilan setara jika memiliki
href
yang sama, kecuali: - Jika
as
diset keimage
, dua panggilan setara jika memilikihref
,imageSrcSet
, danimageSizes
yang sama.
- Dua pemanggilan setara jika memiliki
- Di browser, Anda dapat memanggil
preload
dalam situasi apa pun: saat me-render komponen, di Effect, di event handler, dan sebagainya. - Dalam rendering sisi server atau saat merender Komponen Server,
preload
hanya memiliki efek jika Anda memanggilnya saat me-render komponen atau dalam konteks asinkronisasi yang berasal dari rendering komponen. Pemanggilan lainnya akan diabaikan.
Penggunaan
Preloading awal saat me-render
Panggil preload
saat me-render komponen jika Anda mengetahui bahwa komponen tersebut atau anak komponen akan menggunakan sumber daya tertentu.
Contoh 1 dari 4: Preloading skrip eksternal
import { preload } from 'react-dom';
function AppRoot() {
preload("https://example.com/script.js", {as: "script"});
return ...;
}
Jika Anda ingin agar browser segera mengeksekusi skrip (bukan hanya mengunduhnya), gunakan preinit
. Jika Anda ingin memuat modul ESM, gunakan preloadModule
.
Preloading pada event handler
Panggil preload
dalam event handler sebelum bertransisi ke halaman atau state yang membutuhkan sumber daya eksternal. Hal ini akan memulai proses lebih awal dibandingkan jika Anda memanggilnya saat merender halaman atau state baru.
import { preload } from 'react-dom';
function CallToAction() {
const onClick = () => {
preload("https://example.com/wizardStyles.css", {as: "style"});
startWizard();
}
return (
<button onClick={onClick}>Start Wizard</button>
);
}