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

Поделиться
HTML-код
  • Опубликовано: 30 янв 2025

Комментарии • 49

  • @baobaostore
    @baobaostore 2 года назад +5

    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
    @hoidanit 2 года назад +27

    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 😁

  • @edwardelrics2138
    @edwardelrics2138 2 года назад

    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
    @tuyvuvan9307 2 года назад

    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

  • @Blackderrzorz
    @Blackderrzorz 2 года назад +1

    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 )

  • @CuongLePianoCover
    @CuongLePianoCover 2 года назад

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

  • @maicaotri3668
    @maicaotri3668 2 года назад +1

    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

  • @minhbaotran180
    @minhbaotran180 2 года назад

    quá hay anh ơi

  • @hungteacher
    @hungteacher 2 года назад +2

    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 😁

  • @truonghung9618
    @truonghung9618 2 года назад +2

    A dạy về redux obserable đii ạ

  • @nguyennam5056
    @nguyennam5056 2 года назад

    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

  • @ImVuCms
    @ImVuCms 2 года назад

    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

  • @longduongbao5923
    @longduongbao5923 2 года назад

    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!

  • @Tienthanh0907
    @Tienthanh0907 Год назад

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

  • @TuiTenBo-xw5qy
    @TuiTenBo-xw5qy 2 года назад

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

    • @holetex
      @holetex  2 года назад

      Cảm ơn em nhé

  • @evondevfrontend
    @evondevfrontend 2 года назад

    Good job bro nhé kaka

    • @holetex
      @holetex  2 года назад

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

  • @ThienNguyen-pd1yp
    @ThienNguyen-pd1yp 2 года назад

    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?

  • @KhanhLe-yp1oh
    @KhanhLe-yp1oh 2 года назад

    In The setup what soft is that the little one

  • @01_lethanhan89
    @01_lethanhan89 2 года назад

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

  • @leephan1912
    @leephan1912 2 года назад +1

    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 года назад +2

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

  • @glorynt7925
    @glorynt7925 2 года назад

    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.

  • @antucover9962
    @antucover9962 2 года назад

    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ỉ?

  • @trunglevan860
    @trunglevan860 2 года назад

    Anh vừa khai sáng em ^^

  • @luantruong4621
    @luantruong4621 2 года назад

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

  • @tienluuvan9412
    @tienluuvan9412 2 года назад

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

  • @vunguyenhoang2334
    @vunguyenhoang2334 2 года назад +1

    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 года назад +2

      đúng r bạn

  • @hauladv
    @hauladv 2 года назад

    hay

  • @dthanhf4646
    @dthanhf4646 2 года назад

    many thanks

  • @sulkatamelody9115
    @sulkatamelody9115 2 года назад +3

    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 2 года назад

      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

  • @nguyennam5056
    @nguyennam5056 2 года назад

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

  • @congbui4092
    @congbui4092 2 года назад

    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 ạ !!

  • @IQTestingRiddles
    @IQTestingRiddles 2 года назад

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

    • @holetex
      @holetex  2 года назад +3

      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

  • @fuhovu2225
    @fuhovu2225 2 года назад

    vì k nên dùng react

  • @binhcoding3am148
    @binhcoding3am148 2 года назад +4

    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 2 года назад +1

      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ỉ.