TẠI SAO không nên dùng Index làm Key trong React???

Trong video này chúng ta sẽ cùng tìm hiểu lý do tại sao không nên dúng Index làm Key ở trong React
🔗 Link tham khảo 🔗
Redux Series: • Học Redux
React 18 trong 10 phút: • React 18 có gì mới? Tì...
Học React trong 30 phút: • Học React JS cơ bản tr...
React Hooks Series: • Học useState - React H...
📢 Liên hệ với mình tại 📢
Facebook: / ​
Instagram: / holetex
Github: github.com/holetexvn
Facebook cá nhân: / minhtung09
Email: holetex@outlook.com
Website: holetex.com
🤝 Tham gia làm hội viên của kênh này để được hưởng đặc quyền:
kzread.infojoin
#holetex #react #reactjs

Пікірлер: 49

  • @baobaostore
    @baobaostore2 жыл бұрын

    Sau khi xem video thì mình hiểu như này: - key cần một value cố định theo thời gian. -> index của phần tử có thể thay đổi theo thời gian nên không sử dụng làm key được. VD: element X ban đầu có key là 0, nhưng sau khi add thêm 1 element mới vào đầu danh sách thì key của element X lại bị đổi thành 1. Nên thuật toán difference của react không thể detect được.

  • @hoidanit
    @hoidanit2 жыл бұрын

    hiểu đơn giản là key thằng React nó dùng. để tránh bugs thì đừng đụng vào nó, vì dùng index sẽ dính chưởng khi thác tác với data, đặc biệt là array => méo care vào tạo key # index để tránh bugs, có bạn nào hay code như vậy ko 😁

  • @nguyennguyenbao1419

    @nguyennguyenbao1419

    2 жыл бұрын

    Ụa a đi cmt dạo à :v

  • @edwardelrics2138
    @edwardelrics21382 жыл бұрын

    content này mới thấy ở cha gì chia sẻ , dù sao cũng cảm ơn anh , để mai lên cty refactor lại đống map :)

  • @tuyvuvan9307
    @tuyvuvan93072 жыл бұрын

    Wow, hay quá, trước giờ cứ thấy mọi người bảo là không nên dùng, giờ mới biết tại sao

  • @maicaotri3668
    @maicaotri36682 жыл бұрын

    Ngày xưa đi pv ngta cũng có hỏi em vụ đặt key bằng index như này, và trong project cũng gặp lỗi tương tự ạ. Em cám ơn anh

  • @Blackderrzorz
    @Blackderrzorz2 жыл бұрын

    xin mở rộng vấn đề một tý là không riêng gì react mà bất cứ ngôn ngữ nào liên quan tới việc xóa sửa phần tử trong mãng có xét đến thứ tự, đều gặp vấn đề này. Nghĩa là xóa hay thêm 1 phần tử trong mảng thì dùng định danh của phần tử đó chứ không nên dùng thứ tự của phần tử trong mảng để xử lý. * Định danh của phần tử chình là property của phần tử đó như video trên là todo.id ( gần giống khóa chính trong bảng )

  • @antucover9962
    @antucover99622 жыл бұрын

    React 18 có dùng được rekit studio không anh? Hay giờ phát triển dùng react có công cụ nào xây dựng khung web ổn không nhỉ?

  • @ImVuCms
    @ImVuCms2 жыл бұрын

    Vấn đề lớn nhất là khi key thay đổi thì component bị đập đi xây lại hoàn toàn điều này thì k hề tốt về mặt hiệu năng, đặc biệt trên react native. Còn bug trên thì vẫn có nhiều cách khác nhau để fix

  • @minhbaotran180
    @minhbaotran180 Жыл бұрын

    quá hay anh ơi

  • @CuongLePianoCover
    @CuongLePianoCover Жыл бұрын

    Hay cần thêm những vid như này share cho ae biết

  • @tienluuvan9412
    @tienluuvan94122 жыл бұрын

    anh có thể làm thêm về react native hông ạ

  • @truonghung9618
    @truonghung96182 жыл бұрын

    A dạy về redux obserable đii ạ

  • @ThienNguyen-pd1yp
    @ThienNguyen-pd1yp2 жыл бұрын

    cho mình hỏi tại sao completed bị lỗi nhưng name hiển thị ko bị khi dùng index làm key?

  • @nguyennam5056
    @nguyennam50562 жыл бұрын

    Tốt nhất là vẫn nên định danh , lỡ sau này có update thêm feature hay scale lại thì cũng k gặp nhưng lỗi ngớ ngẩn

  • @Tienthanh0907
    @Tienthanh0907 Жыл бұрын

    Nếu init 1 uuid để set key thì giải pháp đó có ổn ko ta ?

  • @KhanhLe-yp1oh
    @KhanhLe-yp1oh2 жыл бұрын

    In The setup what soft is that the little one

  • @longduongbao5923
    @longduongbao59232 жыл бұрын

    Cảm ơn anh nhiều, em cũng dùng index làm key bấy lâu nay

  • @holetex

    @holetex

    2 жыл бұрын

    Cảm ơn em đã ủng hộ anh!

  • @luantruong4621
    @luantruong4621 Жыл бұрын

    Anh dùng font chữ gì đấy anh

  • @trunglevan860
    @trunglevan8602 жыл бұрын

    Anh vừa khai sáng em ^^

  • @01_lethanhan89
    @01_lethanhan892 жыл бұрын

    e cx đang bị lỗi này bảo sao. May quá gặp vid cuả a

  • @dthanhf4646
    @dthanhf46462 жыл бұрын

    many thanks

  • @TuiTenBo-xw5qy
    @TuiTenBo-xw5qy2 жыл бұрын

    hay ạ, em cảm ơn, mấy nay cứ auto dùng index

  • @holetex

    @holetex

    2 жыл бұрын

    Cảm ơn em nhé

  • @hauladv
    @hauladv2 жыл бұрын

    hay

  • @hungteacher
    @hungteacher2 жыл бұрын

    anh Tùng làm thêm video về redux saga tutorial nha anh, cảm ơn anh nhiều, a dạy rất dễ hiểu lun á :D

  • @holetex

    @holetex

    2 жыл бұрын

    Cảm ơn em zai 😄

  • @hungteacher

    @hungteacher

    2 жыл бұрын

    @@holetex neu duoc a làm thêm về redux saga nha a 😍

  • @baobaostore

    @baobaostore

    2 жыл бұрын

    @@holetex làm về chủ để redux saga, react query view cao lắm anh 😁

  • @evondevfrontend
    @evondevfrontend2 жыл бұрын

    Good job bro nhé kaka

  • @holetex

    @holetex

    2 жыл бұрын

    Cảm ơn bro nhiều nhé 😄

  • @leephan1912
    @leephan19122 жыл бұрын

    Những ui nào có data thì key nên né index thôi nhỉ? Ví dụ e cần 1 array fake để làm skeleton cho 1 list thì e dùng index (thứ tự) vẫn bình thường k ảnh hưởng gì. Ví dụ Arrary.from(Array.keys(10)).map( e => ) (e ở đây cũng gần như là index: 0,1,2,3,...)

  • @holetex

    @holetex

    2 жыл бұрын

    yes em, chỉ lưu ý khi sử dụng với dữ liệu thật thôi em

  • @glorynt7925
    @glorynt79252 жыл бұрын

    hiểu nôm na là key để thằng react nó phân biệt các list data có sự unique để xử lý chuẩn cho từng item trong list data đó, nếu đặt key = index thì chả khác nào khi thay đổi data thì lại gán index của item trong list data đó cho item khác.

  • @vunguyenhoang2334
    @vunguyenhoang23342 жыл бұрын

    Nếu là data tĩnh dùng index thì ok phải không, còn nếu data update thì không dùng được phải không bạn

  • @holetex

    @holetex

    2 жыл бұрын

    đúng r bạn

  • @nguyennam5056
    @nguyennam50562 жыл бұрын

    Dùng linh hoạt thì vẫn được thôi.

  • @sulkatamelody9115
    @sulkatamelody91152 жыл бұрын

    Tuỳ trường hợp thôi mấy anh bạn à? Thuần tuý render list data ra thì dùng key làm index để bypass warning cho nhanh gọn, và code nó chung 1 format copy paste nó tiện khỏi sửa, còn khi nào mà dùng để thêm sửa xoá thì mới quan tâm đến cái chuyện key = id. Làm việc linh hoạt chứ cứng ngắc làm gì, làm lâu am hiểu về cái thứ mình sử dụng thì mấy quy tắc là vô nghĩa, 1 thằng senior JS nó làm ra product còn ít bug hơn cả thằng gà code = TS

  • @TMT-ii3ro

    @TMT-ii3ro

    Жыл бұрын

    bạn so sánh vậy khá nghiêng về một phía, việc code JS ngon không bug không ai phủ nhận cả nhưng code TS các props và state được định nghĩa type rõ ràng giúp cho việc maintain dễ dàng hơn, và debug nhanh hơn

  • @congbui4092
    @congbui40922 жыл бұрын

    hi anh , em không biết anh sống ở trong nước hay nước ngoài, nhưng anh có thể nói chuyện bình thường được không ạ . Sử dụng index như là một cái "kì" ??? Mong anh giữ gìn sự trong sáng cho cả tiếng anh và tiếng việt ạ !!

  • @fuhovu2225
    @fuhovu22252 жыл бұрын

    vì k nên dùng react

  • @IQTestingRiddles
    @IQTestingRiddles2 жыл бұрын

    Không dùng index thì thường người ta dùng gì mọi người nhỉ

  • @holetex

    @holetex

    2 жыл бұрын

    mình nên dùng id của chính dữ liệu đang render. Lúc thêm mới dữ liệu vào danh sách thì có thể thêm field id bằng hook useId() hoặc cài thêm thư viện bên ngoài như www.npmjs.com/package/uuid

  • @igdev6095

    @igdev6095

    2 жыл бұрын

    @@holetex lúc trc e cũng dùng cách như này để làm cái toast nhưng bị cái issue lúc unshift vào đầu thì tất cả toast sẽ đều bật animation thay vì chỉ mỗi cái đầu có animation thôi

  • @shiro8245

    @shiro8245

    2 жыл бұрын

    thường thì dùng userId của API luôn . Còn không thì dùng ID

  • @IQTestingRiddles

    @IQTestingRiddles

    2 жыл бұрын

    Mình cảm mọi người, cảm ơn HoleTex

  • @binhcoding3am148
    @binhcoding3am148 Жыл бұрын

    Tóm tắt video Thứ nhất về vấn đề hiệu xuất: -Trường hợp sử dụng Unique as Key: cả ngay khi thêm vào đầu và cuối Vitrual DOM sẽ so sánh lúc trước khi cập nhập và sau khi cập nhập, nhận thấy Key là unique nên các element không bị thay đổi => React chỉ cập nhập thành phần được thêm vào cuối( đầu). -Trường hợp sử dụng Index as Key: thêm vào đầu , bây giờ key của các element khác đều thay đổi, điều này khiến React phải cập nhập lại tất cả một lần nữa thay vì chỉ cần cập nhập elem mới được thêm vào Thứ hai về vấn đề ánh xạ , sắp xếp , xóa...: -Trường hợp sử dụng index á key: thao tác add delete làm toàn bộ danh sách bị cập nhập lại , một số thao tác dựa vào key sẽ bị sai lệch -Trường hợp sử dụng unique id as key: thao tác add delet... danh sách chỉ thay đổi thành phần bị tác động demo các trường hợp sorrt delete với index và unique codesandbox.io/s/loving-wilbur-enj6v?from-embed ? Vậy khi nào được sử dụng index: - Khi data là tĩnh - Không thực hiện thao tác thêm xóa sửa sắp xếp,.. ? Vậy khi nào sử dụng unique: - Bất cứ khi nào dùng cũng dc :v miễn là data có unique ( quên index as key đi, auto unique :))

  • @atNguyen-sy3il

    @atNguyen-sy3il

    Жыл бұрын

    như thể để key = index để khỏi warning thôi, chứ cũng không khác mấy so với ko dùng key nhỉ.