制作网页站点的具体流程案例,网站深圳,网站建设6135678,百度竞价推广自己可以做吗一、Vue2写法
1、watch使用的几种方法
1、通过 watch 监听 data 数据的变化#xff0c;数据发生变化时#xff0c;就会打印当前的值 watch: {data(val, value) {console.log(val)console.log(value)}}
2、通过 watch 监听 list 数据的变化#xff0c;数据发生变化时…一、Vue2写法
1、watch使用的几种方法
1、通过 watch 监听 data 数据的变化数据发生变化时就会打印当前的值 watch: {data(val, value) {console.log(val)console.log(value)}}
2、通过 watch 监听 list 数据的变化数据发生变化时this.number使用深度监听 data {return {list: {id: 1,type: 0},number: 0}},watch: {list: {handler(newVal) {this.number},deep: true}}
3、通过 watch 监听 data 数据的变化数据发生变化时,执行 change 方法 watch: {data change // 值可以为methods的方法名}methods: {change(curVal,oldVal){console.log(curVal,oldVal)}}
2、watch中的immediate、handler和deep属性
1.immediate 和 handler handler属性在watch中的作用是指定一个回调函数在监视的数据发生变化时被调用这样使用watch时有一个特点就是当值第一次绑定时不会执行监听函数只有值发生改变时才会执行。如果我们需要在最初绑定值的时候也执行函数则就需要用到immediate属性。 data {return {list: {id: 1,type: 0},number: 0}}watch: {list: {handler(newVal) {this.number},immediate: true}}
2.deep深度监听 当需要监听一个对象的改变时普通的watch方法无法监听到对象内部属性的改变此时就需要deep属性对对象进行深度监听。 data {return {list: {id: 1,type: 0},number: 0}}watch: {list: {handler(newVal) {this.number},deep: true} } 设置deep:true则可以监听到 list.id 的变化此时会给 list 的所有属性都加上这个监听器当对象属性较多时每个属性值的变化都会执行 handler。如果只需要监听对象中的一个属性值则可以做以下优化使用字符串的形式监听对象属性 data {return {list: {id: 1,type: 0}}}watch: {list.id: {handler(newVal, oldVal) {......},deep: true} }
这样只会给对象的某个特定的属性加监听器
3、总结 数组一维、多维的变化不需要通过深度监听对象数组中对象的属性变化则需要deep深度监听
二、Vue3写法 侦听一个或者多个数据的变化数据变化时执行回调函数俩个额外参数 immediate控制立刻执行deep开启深度侦听 1、侦听单个数据 script setup// 1. 导入watchimport { ref, watch } from vueconst count ref(0)// 2. 调用watch 侦听变化watch(count, (newValue, oldValue){console.log(count发生了变化老值为${oldValue},新值为${newValue})})/script
2、侦听多个数据
侦听多个数据第一个参数可以改写成数组的写法 script setup// 1. 导入watchimport { ref, watch } from vueconst count ref(0)const name ref(cp)// 2. 调用watch 侦听变化watch([count, name], ([newCount, newName],[oldCount,oldName]){console.log(count或者name变化了[newCount, newName],[oldCount,oldName])})/script
3、immediate属性
在侦听器创建时立即出发回调响应式数据变化之后继续执行回调 script setup// 1. 导入watchimport { ref, watch } from vueconst count ref(0)// 2. 调用watch 侦听变化watch(count, (newValue, oldValue){console.log(count发生了变化老值为${oldValue},新值为${newValue})},{immediate: true})/script
4、deep深度监听
通过watch监听的ref对象默认是浅层侦听的直接修改嵌套的对象属性不会触发回调执行需要开启deep script setup// 1. 导入watchimport { ref, watch } from vueconst state ref({ count: 0 })// 2. 监听对象statewatch(state, (){console.log(数据变化了)})const changeStateByCount (){// 直接修改不会引发回调执行state.value.count}/scriptscript setup// 1. 导入watchimport { ref, watch } from vueconst state ref({ count: 0 })// 2. 监听对象state 并开启deepwatch(state, (){console.log(数据变化了)},{deep:true})const changeStateByCount (){// 此时修改可以触发回调state.value.count}/script