欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React、Vue中key的作用詳解 (key的內(nèi)部原理解析)

 更新時(shí)間:2023年10月31日 09:07:44   作者:夕苜19  
key是虛擬DOM對(duì)象的標(biāo)識(shí),當(dāng)狀態(tài)中的數(shù)據(jù)發(fā)生變化時(shí),Vue會(huì)根據(jù)[新數(shù)據(jù)]生成[新的虛擬DOM],本文給大家介紹React、Vue中key的作用詳解 (key的內(nèi)部原理解析),感興趣的朋友一起看看吧

1. 虛擬DOM中key的作用:

   key是虛擬DOM對(duì)象的標(biāo)識(shí),當(dāng)狀態(tài)中的數(shù)據(jù)發(fā)生變化時(shí),Vue會(huì)根據(jù)[新數(shù)據(jù)]生成[新的虛擬DOM]

   隨后Vue進(jìn)行[新虛擬DOM]與[舊虛擬DOM]的差異比較,比較規(guī)則如下:

2. 對(duì)比規(guī)則:

  (1).舊虛擬DOM中找到了與新虛擬DOM相同的key:

    ①.若虛擬DOM中內(nèi)容沒變,直接使用之前的真實(shí)DOM!

    ②.若虛擬DOM中內(nèi)容變了,則生成新的真實(shí)DOM,隨后替換掉頁(yè)面中之前的真實(shí)DOM。

  (2).舊虛擬DOM中未找到與新虛擬DOM相同的key創(chuàng)建新的真實(shí)DOM,隨后渲染到到頁(yè)面。

3. 用index作為key可能會(huì)引發(fā)的問題:

  (1).若對(duì)數(shù)據(jù)進(jìn)行: 逆序添加、逆序刪除等破壞順序操作:

         會(huì)產(chǎn)生沒有必要的真實(shí)DOM更新 ==> 界面效果沒問題,但效率低

  (2).如果結(jié)構(gòu)中還包含輸入類的DOM:

         會(huì)產(chǎn)生錯(cuò)誤DOM更新 ==> 界面有問題

4. 開發(fā)中如何選擇key?

  (1).最好使用每條數(shù)據(jù)的唯一標(biāo)識(shí)作為key,比如id、手機(jī)號(hào)、身份證號(hào)、學(xué)號(hào)等唯一值。

  (2).如果不存在對(duì)數(shù)據(jù)的逆序添加、逆序刪除等破壞順序操作,僅用于渲染列表用于展示,

      使用index作為key是沒有問題的。

<body>
    <div id="root">
        <h2>人員列表</h2>
        <button @click="add_liu">點(diǎn)擊添加一個(gè)老劉</button>
        <ul>
            <!-- <li v-for='p in persons' :key="p.id"> -->
            <li v-for='p in persons' :key="index">
                {{p.name}} - {{p.age}}  <input type="text">
            </li>
        </ul>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#root",
        data:{
            persons: [
                {
                    id: '001',
                    name: "張三",
                    age: 18,
                },
                {
                    id: '002',
                    name: "李四",
                    age: 19,
                },
                {
                    id: '003',
                    name: "王五",
                    age: 20,
                }
            ],
        },
        methods: {
            add_liu: function(){
                const liu = 
                {
                    id: '004',
                    name: "老劉",
                    age: 30,
                }
                this.persons.unshift(liu)
            }
        },
    })
</script>

到此這篇關(guān)于React、Vue中key的作用詳解 (key的內(nèi)部原理解析)的文章就介紹到這了,更多相關(guān)react vue key作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react腳手架如何配置less和ant按需加載的方法步驟

    react腳手架如何配置less和ant按需加載的方法步驟

    這篇文章主要介紹了react腳手架如何配置less和ant按需加載的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-11-11
  • React中使用Echarts無(wú)法顯示title、tooltip等組件的解決方案

    React中使用Echarts無(wú)法顯示title、tooltip等組件的解決方案

    這篇文章主要介紹了React中使用Echarts無(wú)法顯示title、tooltip等組件的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • flouting?ui定位組件完美替代ant?deisgn使用詳解

    flouting?ui定位組件完美替代ant?deisgn使用詳解

    這篇文章主要為大家介紹了flouting?ui定位組件完美替代ant?deisgn使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 基于React實(shí)現(xiàn)下拉刷新效果

    基于React實(shí)現(xiàn)下拉刷新效果

    這篇文章主要介紹了如何基于react實(shí)現(xiàn)下拉刷新效果,在下拉的時(shí)候會(huì)進(jìn)入loading狀態(tài),文中有詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • react中的useContext具體實(shí)現(xiàn)

    react中的useContext具體實(shí)現(xiàn)

    useContext是React提供的一個(gè)鉤子函數(shù),用于在函數(shù)組件中訪問和使用Context,useContext的實(shí)現(xiàn)原理涉及React內(nèi)部的機(jī)制,本文給大家介紹react中的useContext具體實(shí)現(xiàn),感興趣的朋友一起看看吧
    2023-11-11
  • react-router-dom6(對(duì)比?router5)快速入門指南

    react-router-dom6(對(duì)比?router5)快速入門指南

    這篇文章主要介紹了快速上手react-router-dom6(對(duì)比?router5),通過本文學(xué)習(xí)最新的react-router-dom?v6版本的路由知識(shí),并且會(huì)與v5老版本進(jìn)行一些對(duì)比,需要的朋友可以參考下
    2022-08-08
  • 教你在react中創(chuàng)建自定義hooks

    教你在react中創(chuàng)建自定義hooks

    簡(jiǎn)單來(lái)說就是使用自定義hook可以將某些組件邏輯提取到可重用的函數(shù)中。 自定義hook是一個(gè)從use開始的調(diào)用其他hook的Javascript函數(shù),下面看下react中創(chuàng)建自定義hooks的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-11-11
  • React?Context詳解使用方法

    React?Context詳解使用方法

    Context提供了一個(gè)無(wú)需為每層組件手動(dòng)添加props,就能在組件樹間進(jìn)行數(shù)據(jù)傳遞的方法。在一個(gè)典型的?React?應(yīng)用中,數(shù)據(jù)是通過props屬性自上而下(由父及子)進(jìn)行傳遞的,但這種做法對(duì)于某些類型的屬性而言是極其繁瑣的
    2022-12-12
  • ReactNative頁(yè)面跳轉(zhuǎn)實(shí)例代碼

    ReactNative頁(yè)面跳轉(zhuǎn)實(shí)例代碼

    這篇文章主要介紹了ReactNative頁(yè)面跳轉(zhuǎn)的代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • antd?table動(dòng)態(tài)修改表格高度的實(shí)現(xiàn)

    antd?table動(dòng)態(tài)修改表格高度的實(shí)現(xiàn)

    本文主要介紹了antd?table動(dòng)態(tài)修改表格高度的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論