最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js條件渲染和列表渲染以及Vue中key值的內(nèi)部原理

 更新時(shí)間:2023年04月11日 11:16:41   作者:蘇涼.py  
這篇文章主要介紹了Vue.js條件渲染和列表渲染,以及Vue中key值的內(nèi)部原理,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以參考閱讀

條件渲染

v-if

寫法:
(1).v-if="表達(dá)式"
(2).v-else-if="表達(dá)式"
(3).v-else="表達(dá)式"

適用于:切換頻率較低的場(chǎng)景。
特點(diǎn):不展示的DOM元素直接被移除
注意: v-if可以和:v-else-if、v-else一起使用,但要求結(jié)構(gòu)不能被“打斷”。

實(shí)例:

// <!-- 使用v-if做條件渲染 if為true則把結(jié)構(gòu)直接從頁(yè)面上刪除-->
 <h2 v-if="n==1">蘇涼</h2>
 <h2 v-if="n==2">ming</h2>
 <h2 v-if="n==3">xiaohu</h2>

// <!-- v-else和v-else-if 中間不能斷開-->
 <h3 v-if="n==0">點(diǎn)擊按鈕查看四大名著</h3>
 <h3 v-else-if="n==1">西游記</h3>
 <h3 v-else-if="n==2">水滸傳</h3>
 <h3 v-else-if="n==3">三國(guó)演義</h3>
 <h3 v-else-if="n==4">紅樓夢(mèng)</h3>
 <h3 v-else>沒有更多了...</h3>

v-if配合template標(biāo)簽來使用,template不顯示在也買你中,可與v-if來使用控制一整個(gè)模塊的顯示和隱藏。

//<!-- template只能與v-if來配合使用 -->
<template v-if="n == 3">
    <h4>全部顯示</h4>
    <h4>全部顯示</h4>
    <h4>全部顯示</h4>    
</template>

v-show

寫法:
v-show="表達(dá)式"

適用于:切換頻率較高的場(chǎng)景。
特點(diǎn):不展示的DOM元素未被移除,僅僅是使用樣式隱藏掉。

//  <!-- 使用v-show做條件渲染,相當(dāng)添加了一個(gè)display=none -->
   <h2 v-show="n==1">蘇涼</h2>
   <h2 v-show="n==2">ming</h2>
   <h2 v-show="n==3">xiaohu</h2>

備注:使用v-if的時(shí)候,元素可能無法獲取到,而使用v-show一定可以獲取到。

列表渲染

v-for指令

1.用于展示列表數(shù)據(jù)
2.語法:v-for="(item,index) in xxx" : key="yyy"
3.可遍歷:數(shù)組、對(duì)象、字符串(用的很少)、指定次數(shù)(用的很少)

 實(shí)例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.8/dist/vue.js" type="text/javascript"></script>
</head>
<body>
    <div id="box">  
        <!-- 遍歷數(shù)組 -->
        <h2>人員信息</h2>
        <ul>
            <li v-for="(p,index) in persons" :key="index">
                {{p.name}}-{{p.age}}
            </li>
        </ul>

        <!-- 遍歷對(duì)象 -->
        <h2>汽車信息</h2>
        <ul>
            <li v-for="(value,key,index) in car" :key="index">
                {{index}}-{{key}}-{{value}}
            </li>
        </ul>

        <!-- 遍歷字符串 -->
        <h2>test</h2>
        <ul>
            <li v-for="(value,index) in str" :key="index">
                {{index}}-{{value}}
            </li>
        </ul>

        <!-- 遍歷指定數(shù)字 -->
        <h2>test1</h2>
        <ul>
            <li v-for="(value,index) in 5" :key="index">
                {{index}}-{{value}}
            </li>
        </ul>

    </div>

    <script>
        Vue.config.productionTip = false;  //阻止vue在啟動(dòng)時(shí)生成生產(chǎn)提示
        //創(chuàng)建實(shí)例
        let vm = new Vue({
            el:"#box",
            data:{
                persons:[
                    {id:01,name:"su",age:21},
                    {id:01,name:'ming',age:22},
                    {id:03,name:'xiaohu',age:25}
                ],
                car:{
                    name:"奧迪",
                    color:"black",
                    producted:"2021"
                },
                str:"beijing"
            }
        })
       
    </script>
</body>
</html>

實(shí)例效果:

面試題:key的內(nèi)部原理

1. 虛擬DOM中key的作用:
key是虛擬DOM對(duì)象的標(biāo)識(shí),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),Vue會(huì)根據(jù)【新數(shù)據(jù)】生成【新的虛擬DOM】,
隨后Vue進(jìn)行【新虛DOM】與【舊虛擬DOM】的差異比較,比較規(guī)則如下:

2. 對(duì)比規(guī)則:
(1). 舊虛擬DOM中找到了與新虛擬DOM相同的key:
1.若虛擬DOM中內(nèi)容沒變,直接使用之前的真實(shí)DOM !
2.若虛擬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是沒有問題的。

以上就是Vue.js條件渲染和列表渲染以及Vue中key值的內(nèi)部原理的詳細(xì)內(nèi)容,更多關(guān)于Vue條件渲染和列表渲染及key值的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue的watch和computed方法的使用及區(qū)別介紹

    Vue的watch和computed方法的使用及區(qū)別介紹

    Vue的watch屬性可以用來監(jiān)聽data屬性中數(shù)據(jù)的變化。這篇文章主要介紹了Vue的watch和computed方法的使用及區(qū)別,需要的朋友可以參考下
    2018-09-09
  • vue項(xiàng)目base64加解密使用方式以及解密亂碼

    vue項(xiàng)目base64加解密使用方式以及解密亂碼

    這篇文章主要介紹了vue項(xiàng)目base64加解密使用方式以及解密亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Vue的狀態(tài)管理vuex使用方法詳解

    Vue的狀態(tài)管理vuex使用方法詳解

    由于Vue多個(gè)狀態(tài)分散的跨越在許多組件和交互間各個(gè)角落,大型應(yīng)用復(fù)雜度也經(jīng)常逐漸增長(zhǎng)。為了解決這個(gè)問題,Vue提供了vuex。本文將詳細(xì)介紹Vue狀態(tài)管理vuex,需要的朋友可以參考下
    2020-02-02
  • vue中vue-router的使用說明(包括在ssr中的使用)

    vue中vue-router的使用說明(包括在ssr中的使用)

    這篇文章主要介紹了vue中vue-router的使用說明(包括在ssr中的使用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 一文解析Vue h函數(shù)到底是個(gè)啥

    一文解析Vue h函數(shù)到底是個(gè)啥

    h()函數(shù)是Vue.js中的一個(gè)工具函數(shù),用于創(chuàng)建虛擬DOM節(jié)點(diǎn),具有更高的靈活性和控制力,本文介紹Vue h函數(shù)到底是個(gè)啥,感興趣的朋友一起看看吧
    2025-02-02
  • 淺談vue.js中v-for循環(huán)渲染

    淺談vue.js中v-for循環(huán)渲染

    本篇文章主要介紹了淺談vue.js中v-for循環(huán)渲染,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • vue?使用el-table循環(huán)生成表格的過程

    vue?使用el-table循環(huán)生成表格的過程

    這篇文章主要介紹了vue?使用el-table循環(huán)生成表格的過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue頁(yè)面更新patch的實(shí)現(xiàn)示例

    vue頁(yè)面更新patch的實(shí)現(xiàn)示例

    這篇文章主要介紹了vue頁(yè)面更新patch的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue項(xiàng)目如何從session中獲取對(duì)象,并且使用里面的屬性

    vue項(xiàng)目如何從session中獲取對(duì)象,并且使用里面的屬性

    這篇文章主要介紹了vue項(xiàng)目如何從session中獲取對(duì)象,并且使用里面的屬性問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue單頁(yè)面如何通過prerender-spa-plugin插件進(jìn)行SEO優(yōu)化

    vue單頁(yè)面如何通過prerender-spa-plugin插件進(jìn)行SEO優(yōu)化

    這篇文章主要介紹了vue單頁(yè)面如何通過prerender-spa-plugin插件進(jìn)行SEO優(yōu)化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

永福县| 临邑县| 镶黄旗| 藁城市| 宜昌市| 东港市| 天柱县| 仪陇县| 天祝| 永吉县| 耒阳市| 镇雄县| 汉川市| 阿勒泰市| 汝州市| 石门县| 平远县| 冷水江市| 张掖市| 涡阳县| 正阳县| 锡林郭勒盟| 加查县| 荆州市| 平定县| 门头沟区| 东乡族自治县| 长沙县| 枣强县| 监利县| 平和县| 津南区| 大悟县| 呈贡县| 云南省| 新绛县| 崇州市| 三明市| 萨迦县| 安泽县| 新乡县|