vue总结

Vue 基础知识学习

禁用生产提示:Vue.config.production = false
1. 事件(methods)
  1. 点击事件 @click = "helloworld" 或者v-on:click="helloworld"
  2. 传递参数@click="hellworld(666)"
  3. 传递参数丢失event, @click="helloworld(666,$event)"
  4. 阻止默认事件:@click.prevent=“helloworld"
  5. 阻止事件冒泡(2种方式):
    • e.stopPropagation()
    • @click.stop=“helloworld”
  6. 事件只触发一次 @click.once=“helloworld”
  7. 事件捕获:@click.capture
  8. 只有e.target是当前元素才调用 @click.self=“helloworld”
键盘事件
键盘码:e.key.code   键盘名:e.key
2.数据绑定

v-bind 单向绑定
v-model 双向绑定

列表渲染

数据集

 const vm = new Vue({
                el : '#root',
                data: {
                    persons: [
                        { id: '2201',name:"李华",age:22 },
                        { id: '2202',name:"张三" ,age:23},
                        { id: '2203',name:"小明" ,age:20},
                    ],
                    car:{
                        name:'奥迪A8',
                        price:'70万',
                        color:'黑色'
                    },
                },
                methods: {
                    add(){
                        const p = {id:"2204",name:"thinker",age:40}
                        this.persons.unshift(p)
                    }
                }
               
            })

数组渲染

<h2>学生列表1</h2>
 <ul>
     <li v-for="p in persons">{{p.id}}-{{p.name}}-{{p.age}}</li>
 </ul>

在这里插入图片描述

对象渲染

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

使用key和不使用key的效果

key是列表遍历的唯一标识,不指定key会默认使用遍历的索引值index为key.在使用key是应考虑使用数据集中的唯一标识,如数据id,若使用index,对数组进行头插,会发现key是变化的,导致插入的数据达不到理想效果.

初始态,此时采用数组的index作为key,对数组进行头插,新插的数据就会index =0 ,vue的虚拟dom对比算法会将新的虚拟dom和旧的虚拟dom 进行diff,会尽可能让真实dom复用:
在这里插入图片描述
如图可见,inputtext被复用了
在这里插入图片描述
虚拟dom对比算法图:
在这里插入图片描述
解决策略,使用key时,使用数据集的唯一标识,而非index

<li v-for="(a,b) in persons" :key="a.id">{{a}}--------{{b}} <input type="text"/></li>
在这里插入图片描述

列表过滤(使用监视器watch)
 data : {
                    keywords :"",
                    persons: [
                        {id:"111",name:"周杰伦",age:49,sex:"男"},
                        {id:"222",name:"杨紫琼",age:49,sex:"女"},
                        {id:"333",name:"周润发",age:49,sex:"男"},
                        {id:"555",name:"巩俐",age:49,sex:"女"},

                    ],
                    fillPerson:[],
                },
                watch:{
                    keywords :{
                        immediate:true,
                        handler(val){
                            this.fillPerson = this.persons.filter((p) =>{
                                return p.name.indexOf(val) !==-1;
                            })
                        }
                    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值