Vue.js学习笔记03

本文详细介绍了Vue.js中的v-for指令,包括如何循环普通数组、对象数组、对象以及数字。同时讲解了v-for中key的使用场景和重要性,以及v-if和v-show在条件渲染时的区别和适用情况。内容覆盖了Vue.js的基础语法和最佳实践,有助于理解Vue的模板控制和状态管理。
摘要由CSDN通过智能技术生成

1. v-for指令的四种使用方式

1.1 使用v-for循环普通数组

<div id="app">
    <p v-for="(item,i) in list">{{i}}----{{item}}</p>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            list:[1,2,3,4,5]
        },
        methods:{}
    });
</script>

在这里插入图片描述

1.2 使用v-for循环对象数组

<div id="app">
    <p v-for="user in list">{{user.id}}-----{{user.name}}</p>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            list:[
                {id:1,name:'张三'},
                {id:2,name:'李四'},
                {id:3,name:'王五'}
            ]
        },
        methods:{}
    });
</script>

在这里插入图片描述

1.3 使用v-for循环对象

<div id="app">
    <p v-for="(value,key) in user">值:{{value}}---键:{{key}}</p>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            user:{
                id:1,
                name:'托尼,史塔克',
                gender:'男'
            }
        },
        methods:{}
    });
</script>

在这里插入图片描述
:在遍历对象身上的键值对的时候,除了有value,key,在第三个位置还有一个索引

1.4 使用v-for迭代数字

<p v-for="count in 10">这是第{{count}}次循环</p>

:如果使用v-for迭代数字,序号从1开始。
在这里插入图片描述

2. v-for中key的使用

2.2.0+的版本中,当在组件中使用v-for时,key是必须的。

<div id="app">
   <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 list">
       <input type="checkbox">{{item.id}}--{{item.name}}
   </p>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            id:'',
            name:'',
            list:[
                {id:1,name:'李斯'},
                {id:2,name:'嬴政'},
                {id:3,name:'赵高'},
                {id:4,name:'韩非'},
                {id:5,name:'荀子'}
            ]
        },
        methods:{
            add(){  //添加元素到对象数组
                this.list.push({id:this.id,name:this.name})
            }
        }
    });
</script>

在这里插入图片描述
但是如果在对象数组前面添加元素,并选中最后一个元素,就会出现下面这种情况。

methods:{
    add(){  //添加元素到对象数组
        this.list.unshift({id:this.id,name:this.name})
    }
}

在这里插入图片描述
在这里插入图片描述
注意:使用v-for循环的时候,key属性只能使用数字或字符串,key在使用的时候,必须使用v-bind属性绑定的形式,指定key的值。

<p v-for="item in list" :key="item.id">
	<input type="checkbox">{{item.id}}--{{item.name}}
</p>

3. v-if和v-show的使用和特点

<div id="app">
    <input type="button" value="toggle" @click="flag=!flag">
    <h3 v-if="flag">这是用v-if控制的元素</h3>
    <h3 v-show="flag">这是用v-show控制的元素</h3>
</div>

在这里插入图片描述
在这里插入图片描述

3.1 v-if的特点

  • 每次都会重新删除或创建元素。
  • 有较高的切换性能消耗。

3.2 v-show的特点

  • 每次不会重新进行DOM元素的删除和创建操作,只是切换了元素的display:none样式。
  • 有较高的初始渲染消耗。

3.3 注意事项

  • 如果元素涉及到频繁的切换,最好不要使用v-if。
  • 如果元素可能永远也不会被显示出来,则推荐v-if。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫璃Moly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值