中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue.js條件渲染、列表渲染及Vue中key值的內部原理是什么

發布時間:2023-04-11 15:09:34 來源:億速云 閱讀:274 作者:iii 欄目:開發技術

這篇文章主要介紹“Vue.js條件渲染、列表渲染及Vue中key值的內部原理是什么”,在日常操作中,相信很多人在Vue.js條件渲染、列表渲染及Vue中key值的內部原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Vue.js條件渲染、列表渲染及Vue中key值的內部原理是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    條件渲染

    v-if

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

    適用于:切換頻率較低的場景。
    特點:不展示的DOM元素直接被移除
    注意: v-if可以和:v-else-ifv-else一起使用,但要求結構不能被“打斷”。

    實例:

    // <!-- 使用v-if做條件渲染 if為true則把結構直接從頁面上刪除-->
     <h3 v-if="n==1">蘇涼</h3>
     <h3 v-if="n==2">ming</h3>
     <h3 v-if="n==3">xiaohu</h3>
    
    // <!-- v-else和v-else-if 中間不能斷開-->
     <h4 v-if="n==0">點擊按鈕查看四大名著</h4>
     <h4 v-else-if="n==1">西游記</h4>
     <h4 v-else-if="n==2">水滸傳</h4>
     <h4 v-else-if="n==3">三國演義</h4>
     <h4 v-else-if="n==4">紅樓夢</h4>
     <h4 v-else>沒有更多了...</h4>

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

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

    v-show

    寫法:
    v-show="表達式"

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

    //  <!-- 使用v-show做條件渲染,相當添加了一個display=none -->
       <h3 v-show="n==1">蘇涼</h3>
       <h3 v-show="n==2">ming</h3>
       <h3 v-show="n==3">xiaohu</h3>

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

    列表渲染

    v-for指令

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

     實例:

    <!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">  
            <!-- 遍歷數組 -->
            <h3>人員信息</h3>
            <ul>
                <li v-for="(p,index) in persons" :key="index">
                    {{p.name}}-{{p.age}}
                </li>
            </ul>
    
            <!-- 遍歷對象 -->
            <h3>汽車信息</h3>
            <ul>
                <li v-for="(value,key,index) in car" :key="index">
                    {{index}}-{{key}}-{{value}}
                </li>
            </ul>
    
            <!-- 遍歷字符串 -->
            <h3>test</h3>
            <ul>
                <li v-for="(value,index) in str" :key="index">
                    {{index}}-{{value}}
                </li>
            </ul>
    
            <!-- 遍歷指定數字 -->
            <h3>test1</h3>
            <ul>
                <li v-for="(value,index) in 5" :key="index">
                    {{index}}-{{value}}
                </li>
            </ul>
    
        </div>
    
        <script>
            Vue.config.productionTip = false;  //阻止vue在啟動時生成生產提示
            //創建實例
            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>

    實例效果:

    Vue.js條件渲染、列表渲染及Vue中key值的內部原理是什么

    面試題:key的內部原理

    1. 虛擬DOM中key的作用:
    key是虛擬DOM對象的標識,當數據發生變化時,Vue會根據【新數據】生成【新的虛擬DOM】,
    隨后Vue進行【新虛DOM】與【舊虛擬DOM】的差異比較,比較規則如下:

    2. 對比規則:
    (1). 舊虛擬DOM中找到了與新虛擬DOM相同的key:
    1.若虛擬DOM中內容沒變,直接使用之前的真實DOM !
    2.若虛擬DOM中內容變了,則生成新的真實DOM,隨后替換掉頁面中之前的真實DOM。
    (2). 舊虛擬DOM中未找到與新虛擬DOM相同的key
    創建新的真實DOM,隨后渲染到到頁面。

    3. 用index作為key可能會引發的問題:
    1.若對數據進行:逆序添加、逆序刪除等破壞順序操作:會產生沒有必要的真實DOM更新=>界面效果沒問題,但效率低。
    2.如果結構中還包含輸入類的DOM:會產生錯誤DOM更新=>界面有問題。

    4. 開發中如何選擇key?:
    1.最好使用每條數據的唯一標識作為key,比如id、手機號、身份證號、學號等唯一值。
    2.如果不存在對數據的逆序添加、逆序刪除等破壞順序操作,僅用于渲染列表用于展示,使用index作為key是沒有問題的。

    到此,關于“Vue.js條件渲染、列表渲染及Vue中key值的內部原理是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    当阳市| 林西县| 巍山| 岚皋县| 宜川县| 玉田县| 安国市| 新丰县| 大埔区| 宜城市| 平山县| 黄冈市| 红河县| 乡宁县| 京山县| 南郑县| 二连浩特市| 田林县| 图木舒克市| 绥棱县| 淮北市| 义马市| 临武县| 大新县| 通渭县| 延庆县| 保亭| 蒙自县| 八宿县| 铜川市| 阆中市| 平邑县| 烟台市| 界首市| 博乐市| 平江县| 邯郸市| 沐川县| 肃南| 开原市| 托克逊县|