Skip to main content
Inertia hỗ trợ lazy-load dữ liệu khi cuộn bằng Intersection Observer API. Framework cung cấp component WhenVisible như một cách thuận tiện để tải dữ liệu khi một phần tử xuất hiện trong viewport. Component WhenVisible nhận prop data để chỉ định key của prop cần tải. Component cũng nhận prop fallback để chỉ định component được render trong lúc dữ liệu đang tải. WhenVisible nên bao bọc component phụ thuộc vào dữ liệu đó.
Nếu muốn tải nhiều prop khi một phần tử trở nên hiển thị, bạn có thể truyền một mảng vào prop data.

Tải trước khi phần tử hiển thị

Nếu muốn bắt đầu tải dữ liệu trước khi phần tử thực sự hiển thị, bạn có thể truyền giá trị cho prop buffer. Giá trị buffer là số pixel tính từ thời điểm trước khi phần tử đi vào viewport.
Trong ví dụ trên, dữ liệu sẽ bắt đầu được tải khi phần tử còn cách thời điểm hiển thị 500 pixel. Mặc định, component WhenVisible bao bọc fallback template bằng phần tử div để có thể xác định phần tử có hiển thị trong viewport hay không. Nếu muốn tùy chỉnh phần tử bao bọc, hãy truyền prop as.

Luôn kích hoạt

Mặc định, component WhenVisible chỉ kích hoạt một lần khi element trở nên hiển thị. Nếu muốn luôn kích hoạt tải dữ liệu khi element hiển thị, bạn có thể truyền prop always. Điều này hữu ích khi muốn tải dữ liệu mỗi lần element hiển thị, chẳng hạn element ở cuối infinite scroll list và bạn muốn tải thêm. Ngoài ra có thể dùng component Infinite scroll, vốn xử lý sẵn trường hợp này. Lưu ý rằng nếu request tải dữ liệu vẫn đang được xử lý, component sẽ đợi request đó hoàn tất rồi mới bắt đầu request tiếp theo nếu phần tử vẫn còn hiển thị trong viewport.

Trạng thái fetching

Component WhenVisible cung cấp slot prop fetching để bạn hiển thị chỉ báo đang tải trong các request tiếp theo. Điều này hữu ích vì fallback chỉ được hiển thị ở lần tải đầu tiên, còn fetching cho phép cho biết dữ liệu đang được làm mới ở những lần tải sau.

Giữ lỗi

Component WhenVisible mặc định đặt preserveErrors: true, đảm bảo validation error không bị xóa khi nó kích hoạt reload. Bạn có thể override qua prop params.

Gửi form

Khi gửi form, bạn có thể muốn dùng tùy chọn except để loại trừ các prop đang được component WhenVisible sử dụng. Cách này tránh việc các prop bị tải lại khi bạn được redirect trở về trang hiện tại do lỗi validation.

Tài liệu chính thức

Bài dịch này được đối chiếu từ tài liệu Inertia.js v3 chính thức. Nếu có khác biệt do phiên bản hoặc cập nhật mới, hãy ưu tiên tài liệu chính thức làm nguồn tham chiếu.