React中的Keys


前言

當你在React當中渲染列表項的時候,React會嘗試存儲對應每個單獨項的相關信息,如果你的組件包含state狀態數據,那么這些狀態數據必須被排序。

當你想要更新這些列表項的時候,React必須知道是哪一項被改變了,這樣才能在列表中增刪改查項目。

比如說這個例子

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

變成下面這個表單

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

如果憑我們肉眼來看的話,就能看出1變到了后邊,新增了一個3。但是React只是電腦里運行的程序,無從知道這些改變。
所以我們要為列表中的每一項添加一個key作為唯一的標識符。標識符必須是唯一的。更普遍的一種情況就是,如果我們
的數據是從數據庫獲取的話,表單每一項的ID就很適合當作它的key。

<li key={user.id}>{user.name}:{user.taskCount}tasks left</li>

注意

1.key是React中使用的一種特殊的屬性(除此之外還有ref屬性)。當元素被創建的時候,React會將元素的key值和對應元素綁定存儲起來。
2.盡管key看起來像是props的一部分,可是事實上我們無法通過this.props.key獲取到key的值。React會在判斷元素更新的時候自動使用key,而組件自己是無法獲取到key的
3.當一個列表被重新渲染時,React會根據較新的元素內容依據相應的key值來匹配之前的元素內容
4.當一個新的key值添加到列表中時,表示有一個組件被創建;被刪除時表示有一個組件被銷毀。
5.Key值可以讓React明確標識每個組件,這樣在重新渲染的時候保有對應的狀態數據。
6.如果你去改變某個組件的key值的話,它會在下次渲染的時候被銷毀並當作新的組件重新渲染進來

強烈建議你在渲染列表項的時候添加key值

key的應用場景

1.在列表中更新(增刪查改)列表項的時候,React需要知道到底是哪一個列表項進行了改變
2.在動態創建React元素的時候,而且React元素內包含數量或順序不確定的子元素時,就需要提供key這個特殊的屬性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM