preload
preload
cho phép bạn chủ động tìm nạp một tài nguyên như stylesheet, font hoặc script bên ngoài mà bạn dự định sử dụng.
preload("https://example.com/font.woff2", {as: "font"});
Tham khảo
preload(href, options)
Để tải trước một tài nguyên, hãy gọi hàm preload
từ react-dom
.
import { preload } from 'react-dom';
function AppRoot() {
preload("https://example.com/font.woff2", {as: "font"});
// ...
}
Hàm preload
cung cấp cho trình duyệt một gợi ý rằng nó nên bắt đầu tải xuống tài nguyên đã cho, điều này có thể tiết kiệm thời gian.
Tham số
href
: một chuỗi. URL của tài nguyên bạn muốn tải xuống.options
: một đối tượng. Nó chứa các thuộc tính sau:as
: một chuỗi bắt buộc. Loại tài nguyên. Các giá trị có thể của nó làaudio
,document
,embed
,fetch
,font
,image
,object
,script
,style
,track
,video
,worker
.crossOrigin
: một chuỗi. Chính sách CORS để sử dụng. Các giá trị có thể của nó làanonymous
vàuse-credentials
. Nó là bắt buộc khias
được đặt thành"fetch"
.referrerPolicy
: một chuỗi. Tiêu đề Referrer để gửi khi tìm nạp. Các giá trị có thể của nó làno-referrer-when-downgrade
(mặc định),no-referrer
,origin
,origin-when-cross-origin
vàunsafe-url
.integrity
: một chuỗi. Một hàm băm mật mã của tài nguyên, để xác minh tính xác thực của nó.type
: một chuỗi. MIME type của tài nguyên.nonce
: một chuỗi. Một nonce mật mã để cho phép tài nguyên khi sử dụng Content Security Policy nghiêm ngặt.fetchPriority
: một chuỗi. Đề xuất mức độ ưu tiên tương đối để tìm nạp tài nguyên. Các giá trị có thể làauto
(mặc định),high
vàlow
.imageSrcSet
: một chuỗi. Chỉ sử dụng vớias: "image"
. Chỉ định tập hợp nguồn của hình ảnh.imageSizes
: một chuỗi. Chỉ sử dụng vớias: "image"
. Chỉ định kích thước của hình ảnh.
Giá trị trả về
preload
không trả về gì cả.
Lưu ý
- Nhiều lệnh gọi tương đương đến
preload
có cùng hiệu ứng như một lệnh gọi duy nhất. Các lệnh gọi đếnpreload
được coi là tương đương theo các quy tắc sau:- Hai lệnh gọi là tương đương nếu chúng có cùng
href
, ngoại trừ: - Nếu
as
được đặt thànhimage
, hai lệnh gọi là tương đương nếu chúng có cùnghref
,imageSrcSet
vàimageSizes
.
- Hai lệnh gọi là tương đương nếu chúng có cùng
- Trong trình duyệt, bạn có thể gọi
preload
trong mọi tình huống: trong khi hiển thị một component, trong một Effect, trong một trình xử lý sự kiện, v.v. - Trong quá trình render phía máy chủ hoặc khi render Server Components,
preload
chỉ có hiệu lực nếu bạn gọi nó trong khi render một component hoặc trong một ngữ cảnh không đồng bộ bắt nguồn từ việc render một component. Bất kỳ lệnh gọi nào khác sẽ bị bỏ qua.
Cách sử dụng
Tải trước khi render
Gọi preload
khi render một component nếu bạn biết rằng nó hoặc các component con của nó sẽ sử dụng một tài nguyên cụ thể.
Example 1 of 4: Tải trước một script bên ngoài
import { preload } from 'react-dom';
function AppRoot() {
preload("https://example.com/script.js", {as: "script"});
return ...;
}
Nếu bạn muốn trình duyệt bắt đầu thực thi script ngay lập tức (thay vì chỉ tải xuống), hãy sử dụng preinit
thay thế. Nếu bạn muốn tải một mô-đun ESM, hãy sử dụng preloadModule
.
Tải trước trong một trình xử lý sự kiện
Gọi preload
trong một trình xử lý sự kiện trước khi chuyển sang một trang hoặc trạng thái nơi các tài nguyên bên ngoài sẽ cần thiết. Điều này giúp quá trình bắt đầu sớm hơn so với việc bạn gọi nó trong quá trình render trang hoặc trạng thái mới.
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>
);
}