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àanonymousvà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-originvà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),highvà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
preloadcó 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,imageSrcSetvà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
preloadtrong 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,
preloadchỉ 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>
);
}