vue计算属性与监听属性
- 计算属性 computed
- 监听属性 watch(又名侦听属性)
-
- @事件="方法"
- 监听属性 (watch)的两种写法
- 深度监听(用`deep:true`监听多级结构变化)
- 简写监听属性
- 计算属性与监听属性的区别
计算属性 computed
文章图片
【vue|前端之vue计算属性与监视属性】data内的是属性
计算属性是用
data内的属性
经过计算得到的新属性。计算属性:初次读取和依赖数据改变读取。
计算属性:
obj
是对象格式,get()返回值就是computed内的obj
对象的值;set()通过传入的值修改依赖项来修改obj
的值。完整写法:(对象:get、set)
computed: {
fullName: {
get() { // 读取
return this.lastName + '-' + this.firstName;
},
set(value) { // 修改 -- 大都是用来呈现,没必要写set
const arr = value.split('-');
this.firstName = arr[1];
this.lastName = arr[0];
}
}
}
大多数computed属性都是用来呈现,没必要写set;
确定只是用来呈现的就可以用简写形式:
简写:(函数写法,返回值就是结果)
computed: {
fullName() {
return this.lastName + '-' + this.firstName;
}
}
监听属性 watch(又名侦听属性) 其实就是监听属性的变化,而
computed
测重数据依赖项的变化产生的结果
@事件=“方法” 若方法只是简单一句改变:
但凡有两个属性变化(都应该写到方法里):
methods: {
changeWeather() {
this.isHot = !this.isHot;
}
},
监听属性 (watch)的两种写法 监听对象包括
data、computed
内的属性,当监听对象修改后调用handler()函数
。写法1:
回调函数handler,参数列表第一个位置无论是什么名字都是新值,第二个位置就是旧值
watch: {
isHot: {
// immediate: true, // 初始化时就调用处理函数handler一次
handler(newValue, oldValue) { // 回调函数,参数列表第一个位置无论是什么名字都是新值,第二个位置就是旧值
console.log('isHot被修改了', newValue, oldValue);
}
}
}
immediate: true, // 初始化时就调用handler一次
写法2:
const vm = new Vue({});
vm.$watch('isHot', {
handler(newValue, oldValue) {
console.log('isHot被修改了', newValue, oldValue);
}
})
深度监听(用
deep:true
监听多级结构变化) eg:对象中的属性文章图片
在watch中使用:
deep:true
eg:
const vm = new Vue({
el: '#root',
data() {
return {
numbers: {//多级结构
a: 1,
}
}
},
methods: {
changeWeather() {
this.isHot = !this.isHot;
}
},watch: {
numbers: {
deep: true,//深度监听
handler() {
console.log('numbers改变了')
}
},'numbers.a': {
handler() {
console.log('numbers.a改变了');
}
}
}})
简写监听属性 计算属性只有getshi时,简写
监听属性内部只用handler函数时适用
watch: {
isHot(newValue, oldValue) {
console.log('isHot被修改了', newValue, oldValue);
}
},
简写方式与
computed
相同,都是将对象(内含属性方法)的形式改成函数形式;简写的代价是不能添加初始化调用immediate:true
和深度监视deep:true
计算属性与监听属性的区别 个人理解:
计算属性相当于用Vue的n个属性得出的一个结果,用Vue的实例代理。
监听属性修改的属性要在Vue实例中有定义
尚硅谷:
监听属性可以开启异步任务(eg:用setTimeout开启 延迟一秒后执行handler函数)
文章图片
文章图片
补充:
setTimeout ()方法是属于BOM提供的功能
BOM 是浏览器对象模型
下一节:前端之vue样式
推荐阅读
- Vue|Vue(计算属性与监视属性)
- 前端框架Vue|前端框架Vue----监视属性
- 前端|ES6模块化使用_前端培训
- #|vu2 尚硅谷 组件化编程
- vue|Vue3.0 使用 ant-design-vue
- 前端学习历程总结|猿创征文|我的前端学习之旅【来自一名大四老学长的真情流露】
- 业务|手撕发布订阅模式 eventBus
- vue的事件总线|vue2 eventbus的实现原理
- vue3发布订阅者模式|vue3的EventBus库(mitt)与mitt的使用方式