Đang mở...

Tìm hiểu về Lists và Keys trong React

Đã bao giờ bạn đặt câu hỏi rằng tại sao lại cần key khi map 1 mảng? Tôi chắc chắn bạn đã gặp cảnh báo này: Chỉ cần thêm thuộc...
Danh mục Blog
06/06/2023
Tìm hiểu về Lists và Keys trong React

Đã bao giờ bạn đặt câu hỏi rằng tại sao lại cần key khi map 1 mảng? Tôi chắc chắn bạn đã gặp cảnh báo này:

Chỉ cần thêm thuộc tính key cho item là xong. Nhưng bạn có biết tại sao ReactJS bắt bạn phải làm như vậy không?

Cùng tìm hiểu nhé!

Lý do ReactJS cần Key Props

Khi một state trong component thay đổi, ReacJS sẽ tìm ra nhưng điểm khác biệt. Nếu có component đó sẽ thay đổi.

Lấy ví dụ ta liệt kê 1 mảng gồm 2 phần tử mà không có key props:

<li>1</li>
<li>2</li>

Sau đó phần tử thứ 3 được thêm vào.

<li>1</li>
<li>2</li>
<li>3</li>

ReactJS sẽ kiểm tra qua tất cả các phần tử của 2 mảng so sánh chúng với nhau. 2 phần tử đầu giống nhau, phần tử thứ 3 là chỗ có thay đổi. Component tiến hành render lại.

Tiếp tục thêm phần tử 0 vào đầu mảng thì sao ?

<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>

ReactJS lại so sánh:

  1. thẻ li value = 0 mảng mới khác thẻ li value = 1 mảng cũ => rerender
  2. thẻ li value = 1 mảng mới khác thẻ li value = 2 mảng cũ => rerender

Vậy là gặp lặp qua thấy ông nào cũng khác thế là 4 lần rerender. Performance not good, right :))

Đó là lý do Key Props trong ReactJS ra đời. Vậy khi có key thì sẽ hoạt động như thế nào?

<li key={0}>0</li>
<li key={1}>1</li>
<li key={2}>2</li>
<li key={3}>3</li>

Vậy khi so sánh sự thay đổi ReactJS sẽ so sánh thông qua key của từng phần tử và kết quả ReactJS nhận được là có 1 phần tử mới là <li key={0}>0</li> được thêm vào phía đầu của mảng. Các phần tử còn lại chỉ là dịch xuống vị trí kế tiếp mà thôi.

Vitamindev

Chia sẻ bài viết này

Leave a Reply Câu trả lời

Địa chỉ email của bạn sẽ không được công bố.

Các nội dung liên quan

Xem các nội dung liên quan

26/06/2023
Sử dụng Bucket4j để thực hiện rate limiting trong Java
1. Giới thiệu Blog này, Chúng ta sẽ tìm hiểu về rate limiting và lợi ích của việc sử dụng Bucket4j cho rate limiting trong ứng dụng Java. Rate Limiting...
13/06/2023
Tìm hiểu về Gitlab CI/CD
I. Tổng quan GitLab CI là một phần của GitLab, là một hệ thống quản lý mã nguồn Git dựa trên web và một công cụ liên kết liền mạch để...
19/05/2023
Hướng dẫn dùng Jquery Ajax submit form và gọi REST API
AJAX đại diện cho Asynchronous JavaScript And XML bằng cách sử dụng đối tượng XMLHttpRequest để tương tác với máy chủ (server).
12/05/2023
Spring Email
Bài viết giúp bạn tạo ra ứng dụng gửi tin nhắn email với spring email Tìm nhiên liệu cho phần application.properties Vào phần google accout của bạn và làm theo...