Công nghệ

Xây dựng React Infinite Scrolling and Lazy Loading - Call Data từ API

5m read time
Oct 3, 2021
3 tags
Trần Đình Thắng

Trần Đình Thắng

Oct 3, 2021

Xây dựng React Infinite Scrolling and Lazy Loading - Call Data từ API

1765078249838 211003 xay dung react infinite scrolling and lazy loading call data tu api.png

"React Infinite Scrolling and Lazy Loading - Một Task rất hay gặp khi trong các dự án web application thực tế."

Hey you! Lại là mình đây! Trong bài viết này mình xin chia sẻ quá trình mình làm task - React Infinite Scrolling and Lazy Loading.

Demo React Infinite Scrolling and Lazy Loading

Infinite Scrolling là gì?

Infinite Scrolling là một kỹ thuật thiết kế web cho phép người dùng tiếp tục cuộn một trang mà không cần đến "cuối" của nó. Thiết lập cuộn vô hạn tải nội dung liên tục khi người dùng cuộn xuống trang, cung cấp lượng tài liệu ngày càng tăng và dường như không bao giờ kết thúc và loại bỏ nhu cầu phân trang. Ví dụ về Infinite Scrolling có rất nhiều trong thực tế như "Scrolling Load More" của Facebook và YouTube. Infinite Scrolling sẽ làm tăng trải nhiệm người dùng, thay cho việc phân trang người dùng phải mất thao tác di chuyển để button "Next Page" hoặc button "Number Page" rồi click => làm trải nghiệm người dùng bị ảnh hưởng.  Việc sử dụng Infinite Scrolling sẽ khác phục được điều đó. Tuy nhiên, nhược điểm của Infinite Scrolling đó là khiến người dùng mất thời gian và công sức nếu muốn nhận được dữ liệu ở gần cuối của danh sách. Ví dụ : Công ty Tony Tran có khoảng 1000 nhân viên, người dùng muốn nhận được thông tin của một ai đó ở gần cuối danh sách. Nếu sử dụng Infinite Scrolling thì người dùng phải scrolling rất nhiều lần. Để khắc phục vấn đề này cũng có cách. => Không kỹ thuật hay phương pháp nào là hoàn hảo cả.

Lazy Loading là gì?

Lazy loading là 1 kĩ thuật tối ưu khi làm web, thay vì tải toàn bộ trang web và render ngay từ đầu, kỹ thuật này cho phép tải ngay các thành phần cần thiết để hiển thị tới người dùng và trì hoãn các tài nguyên còn lại cho đến khi cần. Kỹ thuật lazy loading cũng được sử dụng rất nhiều trong thực tế như sử dụng Lazy Loading đối với ảnh, sử dụng Lazy Loading đối với hiển thị component trong React Js, Lazy Loading đối với danh sách. Lazy Loading đối với ảnh  Lazy Loading đối với danh sách  Trong thực tế việc xử lý dữ liệu trong kỹ thuật Infinite Scrolling and Lazy Loading sẽ căn cứ vào yêu cầu của dự án, có thể danh sách dữ liệu sẽ được lấy thông qua API một lần duy nhất ( allPages ) hoặc việc lấy dữ liệu sẽ được thực hiện thông qua mỗi lần gọi API với phân trang. ^^Trong bài viết này mình sẽ thực hiện gọi API với phân trang.^^

Dưới đây là quá trình mình làm task này

Trước tiên ta phải đi tìm một API Free nào đó để lấy dữ liệu. Và mình chọn https://newsapi.org/ tuy nhiên API này chỉ sử dụng được với domain localhost ( môi trường development ). Do nó free mà. nếu muốn sử dụng với môi trường Production thì tất nhiên phải bỏ $. Do vậy mình đã quyết định tự xây dựng API để đỡ phải phụ thuộc họ. Và mình cũng public tại đây : https://tran-dinh-thang-news-api.herokuapp.com/ Mô tả về dùng API : Cung cấp 3 params : q, page, pageSize. q : từ khóa muốn tìm kiếm. page : trang muốn hiển thị. pageSize : số lượng dữ liệu hiện thị tối đa một trang. Xây dựng Custom Hook useArticlesQuery thực việc xử lý vấn đề logic và gọi API .

Tiếp theo ta xây dựng giao diện : JSX

CSS

Xử lý việc nhận biết event khi người dùng scroll đến cuối danh sách :

Đặt ref tại item cuối cùng của danh sách : 

File Source : ArticlesPage.js

useArticlesQuery.js

Source Code : 

Demo :

...

Bài viết gợi ý

Sapa tháng 05/2021 - Kỷ niệm ý nghĩa và chuyến đi thay đổi nhiều thứ

Sapa tháng 05/2021 - Kỷ niệm ý nghĩa và chuyến đi thay đổi nhiều thứ

Một chuyến đi 3 ngày 2 đêm đầy ắp những kỷ niệm, chuyến du lịch xa nhất mình từng đi. Trải nghiệm những điều mới lạ, hòa mình với khí hậu trong lành của vùng Tây Bắc.

5m read timeDu lịch
Chat GPT | Tán Tỉnh Một Cô Gái: Bí Quyết Hiệu Quả Để Chinh Phục Trái Tim

Chat GPT | Tán Tỉnh Một Cô Gái: Bí Quyết Hiệu Quả Để Chinh Phục Trái Tim

Bài viết này cung cấp những bí quyết đơn giản nhưng hiệu quả để tán tỉnh một cô gái và tạo sự ấn tượng sâu sắc trong lòng cô ấy.

5m read timeCuộc sống
Xây dựng ứng dụng To Do List với React JS

Xây dựng ứng dụng To Do List với React JS

ToDoList App là một ứng dụng quản lý danh sách các công việc cần được thưc hiện. Đây là ứng dụng đầu tiên mình làm khi mình học bất cứ 1 công nghệ nào mới như Flutter, React, Vue, Node,... Bài viết này mình sẽ xây dựng ứng dụng ToDoList bằng React JS.

5m read timeCông nghệ
Sử dụng Flutter, cơ sở dữ liệu SQLite tạo ứng dụng To Do List

Sử dụng Flutter, cơ sở dữ liệu SQLite tạo ứng dụng To Do List

Xây dựng ứng dụng quốc dân với công nghệ đa nền tảng mới - Flutter, dựa trên ngôn ngữ hướng đối Dart. Sử dụng hệ quản cơ sở dữ liệu SQLite

5m read timeCông nghệ
Xây dựng ứng dụng To Do List với Javascript

Xây dựng ứng dụng To Do List với Javascript

Trong bài viết này mình sẽ xây dựng ứng dụng ToDoList bằng Javascript, thông qua cơ chế DOM để thao tác với các thẻ HTML.

5m read timeCông nghệ
Xây dựng React Infinite Scrolling and Lazy Loading - Call Data từ API | Blog - Trần Đình Thắng