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

  Рет қаралды 14,612

HoleTex

HoleTex

Күн бұрын

Пікірлер: 49
@baobaostore
@baobaostore 2 жыл бұрын
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 жыл бұрын
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
@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
@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 :)
@CuongLePianoCover
@CuongLePianoCover 2 жыл бұрын
Hay cần thêm những vid như này share cho ae biết
@maicaotri3668
@maicaotri3668 2 жыл бұрын
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
@Blackderrzorz 2 жыл бұрын
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 )
@truonghung9618
@truonghung9618 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
@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!
@hungteacher
@hungteacher 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 😁
@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é
@minhbaotran180
@minhbaotran180 2 жыл бұрын
quá hay anh ơi
@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
@Tienthanh0907
@Tienthanh0907 Жыл бұрын
Nếu init 1 uuid để set key thì giải pháp đó có ổn ko ta ?
@01_lethanhan89
@01_lethanhan89 2 жыл бұрын
e cx đang bị lỗi này bảo sao. May quá gặp vid cuả a
@luantruong4621
@luantruong4621 Жыл бұрын
Anh dùng font chữ gì đấy anh
@trunglevan860
@trunglevan860 2 жыл бұрын
Anh vừa khai sáng em ^^
@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ỉ?
@leephan1912
@leephan1912 2 жыл бұрын
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
@tienluuvan9412
@tienluuvan9412 2 жыл бұрын
anh có thể làm thêm về react native hông ạ
@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?
@evondevfrontend
@evondevfrontend 2 жыл бұрын
Good job bro nhé kaka
@holetex
@holetex 2 жыл бұрын
Cảm ơn bro nhiều nhé 😄
@KhanhLe-yp1oh
@KhanhLe-yp1oh 2 жыл бұрын
In The setup what soft is that the little one
@vunguyenhoang2334
@vunguyenhoang2334 2 жыл бұрын
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
@dthanhf4646
@dthanhf4646 2 жыл бұрын
many thanks
@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.
@hauladv
@hauladv 2 жыл бұрын
hay
@nguyennam5056
@nguyennam5056 2 жыл бұрын
Dùng linh hoạt thì vẫn được thôi.
@sulkatamelody9115
@sulkatamelody9115 2 жыл бұрын
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
@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 жыл бұрын
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 жыл бұрын
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 жыл бұрын
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ỉ.
Code Splitting trong ReactJS
18:35
HoleTex
Рет қаралды 21 М.
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН
Мен атып көрмегенмін ! | Qalam | 5 серия
25:41
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
So sánh useMemo và useCallback khác nhau gì?
22:23
HoleTex
Рет қаралды 13 М.
React 18 có gì mới? Tìm hiểu ngay trong 10 phút
10:43
React.memo() vs React.useMemo ??? - React Hooks (2021)
14:43
Sự kỳ diệu của RTK Query - Redux toolkit query
26:11
Code Đủ Thứ
Рет қаралды 3 М.
React ngày càng trở nên mạnh mẽ hơn
13:58
HoleTex
Рет қаралды 20 М.
Custom Hooks là gì? Tìm hiểu ngay trong 20 phút
20:27
GraphQL vs REST API: Nên chọn cái nào?
9:27
HoleTex
Рет қаралды 30 М.
Học useCallback - React Hooks (2021)
10:24
HoleTex
Рет қаралды 20 М.
How Strong Is Tape?
00:24
Stokes Twins
Рет қаралды 96 МЛН