1. 程式人生 > >Vue學習筆記八:v-for,v-if,v-show指令

Vue學習筆記八:v-for,v-if,v-show指令

toc 創建刪除 logs clas ref -i 較高的 src tps

目錄

  • v-for指令:遍歷
    • HTML和效果圖
    • v-for講解
  • v-if和v-show:創建,刪除,顯示,隱藏
    • HTML和效果圖
    • v-if和v-show的原理

v-for指令:遍歷

HTML和效果圖

有幾個需要講的點,先看v-for的HTML,如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>蜀雲泉</title>
    
    <script type="text/javascript" src="../lib/vue-2.6.10.js"></script>

</head>
<body>
    
    <!-- 這個div就是MVVM中的V,View -->
    <div id="app">

        <!-- 直接遍歷數字 -->
        <p v-for="item in 3">這是第{{ item }}次循環</p>

        <!-- 遍歷list數組 -->
        <p v-for="item in list" v-text="item"></p>

        <!-- 遍歷list對象 -->
        <p v-for="item in list2">{{ item.id }}--{{ item.name }}</p>

        <!-- 遍歷list3對象 -->
        <p v-for="(val,key,i) in list3">值是:{{ val }}--鍵是:{{ key }}--索引是:{{ i }}</p>

        <hr>

        <!-- 再使用v-for遍歷對象添加對象的時候,一定要寫key,這個可以防止數據錯亂 -->
        <div>
            <label>id:
                <input type="text" v-model="id">
            </label>
            <label>name:
                <input type="text" v-model="name">
            </label>
            <input type="button" value="添加" @click="add">
        </div>
        <p v-for="item in list2" :key="item.id">
            <input type="checkbox">{{ item.id }}--{{ item.name }}
        </p>



    </div>


    <script>
        // 這個vm就是MVVM中的VM,ViewModel
        var vm=new Vue({
         el: '#app',
        //  這個data就是MVVM中的M,Model
         data: {
             id:'',
             name:'',
             list:[1,2,3],
             list2:[
                 {id:1,name:"許嵩"},
                 {id:2,name:"蜀雲泉"},
                 {id:3,name:"彈吉他"}
             ],
             list3:{
                 id:1,
                 name:"蜀雲泉",
                 gender:"男",
                 age:24
             }
         },
         methods: {
             add(){
                 this.list2.push({id:this.id,name:this.name})
             }
         }  

        })

    </script>

</body>
</html>

效果圖如下:

技術分享圖片

v-for講解

其實看代碼就已經清楚了,我不清楚的一點是,我想寫多個插值表達式,就必須使用插值表達式,這樣不就出現了才學Vue的時候出現的插值表達式閃爍的問題了?我使用v-text也僅僅只能使用一個插值表達式,這裏暫時存疑。

重點的地方就是v-for在遍歷的同時,如果向數組裏面插入新的內容的時候,一定要寫key值,如果不寫的話,復選框並沒有真正的綁定數據,僅僅綁定的是那個索引的數據而已,所以一定要寫key

v-if和v-show:創建,刪除,顯示,隱藏

HTML和效果圖

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>蜀雲泉</title>
    
    <script type="text/javascript" src="../lib/vue-2.6.10.js"></script>

</head>
<body>
    
    <!-- 這個div就是MVVM中的V,View -->
    <div id="app">

        <input type="button" value="點我" @click="flag=!flag">
 
        <h3 v-if="flag">這是v-if控制的元素</h3>
        <h3 v-show="flag">這是v-show控制的元素</h3>

    </div>


    <script>
        // 這個vm就是MVVM中的VM,ViewModel
        var vm=new Vue({
         el: '#app',
        //  這個data就是MVVM中的M,Model
         data: {
             flag:true
         },
         methods: {
         }  

        })

    </script>

</body>
</html>

效果圖:點擊按鈕,下面的會消失,再點擊會出現

技術分享圖片

v-if和v-show的原理

這個我們打開調試臺就知道了,如圖

技術分享圖片

技術分享圖片

發現沒,總結一下

  1. v-if每次都會重新刪除和創建元素
  2. v-show是切換了元素的display的顯示狀態而已
  3. v-if有較高的切換性能消耗,所以涉及到頻繁的切換,不要使用v-if
  4. v-show有較高的初始渲染消耗

防盜鏈接:本博客由蜀雲泉發表

Vue學習筆記八:v-for,v-if,v-show指令