首頁  >  文章  >  web前端  >  react中key的用法是什麼

react中key的用法是什麼

WBOY
WBOY原創
2022-04-18 11:15:471550瀏覽

在react中,key用於識別元件,可在DOM中的某些元素被增加或刪除時識別哪些元素發生了變化,是一種身份標識;可以根據key來決定是銷毀還是更新元件,若key相同,元件有變更就只更新元件對應的屬性,若key不同,會銷毀先前的元件重新渲染。

react中key的用法是什麼

本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。

react中key的用法是什麼

簡單來說,react利用key來識別元件,它是一種身分識別標識,就像我們的身分證用來辨識一個人一樣。每個key對應一個元件,相同的key react認為是同一個元件,這樣後續相同的key對應元件就不會被建立。

Keys可以在DOM中的某些元素被增加或刪除的時候幫助React識別哪些元素發生了變化。因此你應給數組中的每一個元素一個確定的標識。

react的diff演算法是把key當成唯一id然後比對元件的value來決定是否需要更新的,所以如果沒有key,react將不會知道該如何更新元件。

你不傳key也能用是因為react偵測到子元件沒有key後,會預設將陣列的索引當作key。

react根據key來決定要銷毀重新建立元件還是更新元件,原則是:

  • key相同,元件有所變化,react只會更新元件對應變化的屬性。

  • key不同,元件會銷毀先前的元件,並將整個元件重新渲染。

key的使用場景

在專案開發中,key屬性的使用場景最多的還是由陣列動態建立的子元件的情況,需要為每個子元件新增唯一的key屬性值。那會有的人會自然而然想到,key和動態渲染的子元素所取得的index位置的值很接近,那不是可以直接用index附上key的值呢key={index}?

例如:

{dataList.map((item,index)=>{
    return 
{item.name}
}) }

在你嘗試過後會發現,報錯沒了,渲染也沒問題不是很正常嘛? !但是強烈不推薦用數組index來當key。

如果資料更新只是陣列重新排序或在其中間位置插入新元素,那麼視圖元素都會重新渲染。

例如:

本來index=2的元素向前移動後,那該元素的key不也同樣發生了改變那這樣會改變的Key就沒有任何的存在意義,既然是作為「身分證」一樣的存在,那就不容有失。當然,在你用key值創建子元件的時候,若數組的內容只是作為純展示,而不涉及到數組的動態變更,其實是可以使用index作為key的。

推薦學習:《react影片教學

以上是react中key的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn