2023-09-23(Vue03)

1.7数据代理

1.7.1Vue中的数据代理

通过vm对象来代理data对象中属性的操作(读/写)

1.7.2Vue中数据代理的好处

更加方便的操作data中的数据

1.7.3原理

通过Object.defineProperty()把data对象中所有属性添加到vm上

为每一个添加到vm的属性,都指定一个getter/setter

在getter/setter内部去操作(读/写)data中对应的属性

1.8事件处理

1.8.1事件基本使用

1) 使用v-on:xxx或@xxx绑定事件,其中xx是事件名

2) 事件的回调需要配置在methods对象上,最终会在vm上

3) methods中配置的函数,不可用箭头函数,否则this就不是vm了;

4) methods中配置的函数,都是被vue所管理的函数,this的指向是vm或组件实例对象

5) @click="demo"和@click="demo($event)"效果一致,但后者可以传参

1.8.2事件修饰符

1) prevent  阻止默认事件

2) stop 阻止事件冒泡

3)once 事件只触发一次

4)capture 使用事件的捕获模式

5)self 只有event.target是当前操作的元素时才触发事件

6)passive 事件的默认行为立即执行,无需等待事件回调执行完毕

1.8.3键盘事件

例如: @keydown.enter="showInfo"   

回车enter    删除delete  退出esc  空格space  换行tab等

1.9计算属性

定义:要用的属性不存在,需要通过已有属性计算得来

原理:底层用了Object.defineproperty方法提供的getter和setter

get函数什么时候执行:1) 初次读取时会执行一次 2) 当一来的数据发生变化时会再次调用

优势:内部有缓存机制,效率复用,调试方便

备注:计算属性最终回出现在vm上,直接读取使用即可;如果计算属性要被修改,且set中要引起计算时依赖的数据发生改变

完整写法:

fullName(){

          console.log('get被调用了')

          return this.firstName + '-' + this.lastName

        }

1.10监视属性

当被监视的属性变化时,回调函数自动调用,进行相关操作

监视的属性必须存在,才能进行监视

监视写法: new Vue()时传入watch配置;通过vm.$watch监视

watch:{

        isHot:{

          // immediate:true, //初始化时让handler调用一下

          // deep:true,   多级结构时可能用到深度监视

          //handler什么时候调用?当isHot发生改变时。

          handler(newValue,oldValue){

            console.log('isHot被修改了',newValue,oldValue)

          }

        }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容