React元件中的key

2022-06-23 23:03:17 字數 1652 閱讀 3583

一、key的作用

react中的key屬性,它是乙個特殊的屬性,它是出現不是給開發者用的(例如你為乙個元件設定key之後不能獲取元件的這個key props),而是給react自己用的。

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

//

this.state.users內容

this.state =,

, ],

....

//省略}

render()

return

(

: )}

) );

上面**在dom渲染掛載後,使用者列表只有張三李四兩個使用者,王五並沒有展示處理,主要是因為react根據key認為李四王五是同乙個元件,導致第乙個被渲染,後續的會被丟棄掉。

這樣,有了key屬性後,就可以與元件建立了一種對應關係,react根據key來決定是銷毀重新建立元件還是更新元件。

1) key相同,若元件屬性有所變化,則react只更新元件對應的屬性;沒有變化則不更新。

2) key值不同,則react先銷毀該元件(有狀態元件的componentwillunmount會執行),然後重新建立該元件。

3) setstate:誰用到了所更新的state,就會重新整理該元件,render也並不是所有都會變化,隻變state改變的部分。

另外需要指明的是:

key不是用來提公升react的效能的,不過用好key對效能是有幫組的。

應該知道react使用virtual dom來比較ui狀態的變化,如果dom中的某一節點更新時重新渲染,一樣的話就不渲染。key屬性的作用就在與解決渲染list的這種難題,簡單來說,例如你有乙個list:

orange

banana

如果想更新成

orange

let list = this.props.fruits.map((fruit) =>);

return (

)

二、注意

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值的話,它會在下次渲染的時候被銷毀並當作新的元件重新渲染進來

React 列表元件與key

diff演算法 元件state或props發生變化時,react會 比對 本次虛擬dom樹和上次虛擬dom樹,然後根據二者的不同來操作真實dom樹,這個過程就是diff演算法。diff演算法的基本思路是 從根節點往下遞迴進行比對,每個節點可以看作是該節點以下子樹的根節點。解除安裝裝載 更新compo...

React中利用 key 實現元件重新渲染

最近在專案實踐中,發現react中可以利用key實現子元件的重新渲染,具體場景 需要切換下拉列表時,對應的榜單也要替換成該輪的資料 如下 render this state round表示選中的選單的索引 return record wrap selectedindex showmenu oncha...

react解密 react中key的作用是什麼?

我們知道,不管是在vue還是react中,當迴圈列表的時候,往往會寫乙個key,那麼這個key起到了什麼作用呢?其實,key是react用來追蹤哪些列表的元素被修改,被新增或者是被刪除的輔助標示。在開發過程中我們需要保證某個元素的key在其同級元素中具有唯一性。在react的diff演算法中reac...