react key值理解

1缴挖、key的作用

react中的key屬性蒋得,它是一個(gè)特殊的屬性乙墙,它是出現(xiàn)不是給開發(fā)者用的(例如你為一個(gè)組件設(shè)置key之后不能獲取組件的這個(gè)key props)刷晋,而是給react自己用的。

簡單來說矢否,react利用key來識別組件仲闽,它是一種身份標(biāo)識標(biāo)識,就像我們的身份證用來辨識一個(gè)人一樣僵朗。每個(gè)key對應(yīng)一個(gè)組件赖欣,相同的key react認(rèn)為是同一個(gè)組件,這樣后續(xù)相同的key對應(yīng)組件都不會(huì)被創(chuàng)建验庙。

key不是用來提升react的性能的顶吮,不過用好key對性能是有幫助的。

2粪薛、key的使用場景

在項(xiàng)目開發(fā)中悴了,key屬性的使用場景最多的還是由數(shù)組動(dòng)態(tài)創(chuàng)建的子組件的情況,需要為每個(gè)子組件添加唯一的key屬性值

另外汗菜,還有一種比較常見的場景:為一個(gè)有復(fù)雜繁瑣邏輯的組件添加key后让禀,后續(xù)操作可以改變該組件的key屬性值,從而達(dá)到先銷毀之前的組件陨界,再重新創(chuàng)建該組件巡揍。

3、key的最佳實(shí)踐

index作為key是一種反模式
在list數(shù)組中菌瘪,用key來標(biāo)識數(shù)組創(chuàng)建子組件時(shí)腮敌,若數(shù)組的內(nèi)容只是作為純展示,而不涉及到數(shù)組的動(dòng)態(tài)變更俏扩,其實(shí)是可以使用index作為key的糜工。

但是,若涉及到數(shù)組的動(dòng)態(tài)變更录淡,例如數(shù)組新增元素捌木、刪除元素或者重新排序等,這時(shí)index作為key會(huì)導(dǎo)致展示錯(cuò)誤的數(shù)據(jù)嫉戚。
所以在做數(shù)組新增元素刨裆、刪除元素或者排序的時(shí)候不要使用index作為key澈圈,可以用后端提供過來的唯一值 ID

得出結(jié)論
在數(shù)組中生成的每項(xiàng)都要有key屬性,并且key的值是一個(gè)永久且唯一的值帆啃,即穩(wěn)定唯一瞬女,所以key的值要穩(wěn)定唯一,但不能使用random來生成key的值
Math.random隨機(jī)生成努潘,雖然能夠保持其唯一性诽偷,但是它的值是隨機(jī)而不是穩(wěn)定的,在數(shù)組動(dòng)態(tài)改變時(shí)會(huì)導(dǎo)致數(shù)組元素中的每項(xiàng)都重新銷毀然后重新創(chuàng)建疯坤,有一定的性能開銷报慕;另外可能導(dǎo)致一些意想不到的問題出現(xiàn)。
所以:

key的值要保持穩(wěn)定且唯一压怠,不能使用random來生成key的值卖子。

4、key的其他注意事項(xiàng)

key屬性是添加到自定義的子組件上刑峡,而不是子組件內(nèi)部的頂層的組件上。

key值的唯一是有范圍的玄柠,即在數(shù)組生成的同級同類型的組件上要保持唯一突梦,而不是所有組件的key都要保持唯一

不僅僅在數(shù)組生成組件上,其他地方也可以使用key羽利,主要是react利用key來區(qū)分組件的宫患,相同的key表示同一個(gè)組件,react不會(huì)重新銷毀創(chuàng)建組件實(shí)例这弧,只可能更新娃闲;key不同,react會(huì)銷毀已有的組件實(shí)例匾浪,重新創(chuàng)建組件新的實(shí)例皇帮。

自學(xué),知識點(diǎn)記錄蛋辈。
參考博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末属拾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冷溶,更是在濱河造成了極大的恐慌渐白,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逞频,死亡現(xiàn)場離奇詭異纯衍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)苗胀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門襟诸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓦堵,“玉大人,你說我怎么就攤上這事励堡」韧瑁” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵应结,是天一觀的道長刨疼。 經(jīng)常有香客問我,道長鹅龄,這世上最難降的妖魔是什么揩慕? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮扮休,結(jié)果婚禮上迎卤,老公的妹妹穿的比我還像新娘。我一直安慰自己玷坠,他們只是感情好蜗搔,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著八堡,像睡著了一般樟凄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兄渺,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天缝龄,我揣著相機(jī)與錄音,去河邊找鬼挂谍。 笑死叔壤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的口叙。 我是一名探鬼主播炼绘,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妄田!你這毒婦竟也來了饭望?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤形庭,失蹤者是張志新(化名)和其女友劉穎铅辞,沒想到半個(gè)月后嘹悼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粗梭,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年拳球,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了富纸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤踩。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旨椒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堵漱,到底是詐尸還是另有隱情综慎,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布勤庐,位于F島的核電站示惊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏愉镰。R本人自食惡果不足惜米罚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丈探。 院中可真熱鬧录择,春花似錦、人聲如沸碗降。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讼渊。三九已至货裹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間精偿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工赋兵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笔咽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓霹期,卻偏偏與公主長得像叶组,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子历造,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 3. JSX JSX是對JavaScript語言的一個(gè)擴(kuò)展語法甩十, 用于生產(chǎn)React“元素”,建議在描述UI的時(shí)候...
    pixels閱讀 2,837評論 0 24
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南吭产,這只是我在學(xué)習(xí)過程中的一些閱讀筆記侣监,個(gè)人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,842評論 1 18
  • 深入JSX date:20170412筆記原文其實(shí)JSX是React.createElement(componen...
    gaoer1938閱讀 8,072評論 2 35
  • key的原理 React 元素可以具有一個(gè)特殊的屬性 key臣淤,這個(gè)屬性不是給用戶自己用的橄霉,而是給 React 自己...
    liuniansilence閱讀 2,043評論 0 1
  • 說在前面 關(guān)于 react 的總結(jié)過去半年就一直碎碎念著要搞起來,各(wo)種(tai)原(lan)因(le)邑蒋。心...
    陳嘻嘻啊閱讀 6,878評論 7 41