当前位置: 首页 > news >正文

Vue3中的计算属性和属性监听

compute计算属性

Vue3中可以通过 compute进行监听计算属性,他返回的是一个ref的对象,也就是说 通过compuye这种方式计算属性实际上是进行了ref的操作

import { computed } from 'vue
const user = reactive({firstName: 'A',lastName: 'B'
})
// 只有getter的计算属性
// 监听计算fullName1属性
const fullName1 = computed(() => {console.log('fullName1')return user.firstName + '-' + user.lastName
})
// 有getter与setter的计算属性
// 监听计算fullName2属性
const fullName2 = computed({get () {console.log('fullName2 get')return user.firstName + '-' + user.lastName},set (value: string) {console.log('fullName2 set')const names = value.split('-')user.firstName = names[0]user.lastName = names[1]}
})
return {fullName1,fullName2,
}

watch 属性监听

  • 监视指定的一个或多个响应式数据, 一旦数据变化, 就自动执行监视回调;
  • 默认初始时不执行回调, 但可以通过配置immediate为true, 来指定初始时立即执行第一次;
  • 通过配置deep为true, 来指定深度监视
import { watch } from 'vue
const user = reactive({firstName: 'A',lastName: 'B'
})
watch(user, () => {fullName3.value = user.firstName + '-' + user.lastName
}, {immediate: true,  // 是否初始化立即执行一次, 默认是falsedeep: true, // 是否是深度监视, 默认是false
})

其中 watch 也可以监听多个数据

/* 
watch多个数据: 使用数组来指定如果是ref对象, 直接指定如果是reactive对象中的属性,  必须通过函数来指定
*/
// ref 对象
watch([user.firstName, user.lastName, fullName3], (values) => {console.log('监视多个数据', values)
})
// reactive 对象
watch([() => user.firstName, () => user.lastName, fullName3], (values) => {console.log('监视多个数据', values)
})

watchEffect 属性监听

  • 不需要配置immediate,默认初始时就会执行第一次, 从而可以收集需要监视的数据;
  • 不用直接指定要监视的数据, 回调函数中使用的哪些响应式数据就监视哪些响应式数据
import { watchEffect} from 'vue
const user = reactive({firstName: 'A',lastName: 'B'
})
// 监视所有回调中使用的数据
watchEffect(() => {fullName3.value = user.firstName + '-' + user.lastName
}) 
return {user,fullName1,fullName2,fullName3
}
http://www.lryc.cn/news/139556.html

相关文章:

  • 微信开发之一键修改群公告的技术实现
  • 【git】工作场景中常用的git命令
  • Vue路由(详解)
  • 打开软件提示msvcp140.dll丢失的解决方法,msvcp140主要丢失原因
  • 关于路由器和DNS解析的一些新理解
  • vscode 与 C++
  • 水果flstudio好用吗?中文版FL21最新版本如何下载
  • PHP is_array()函数详解,PHP判断是否为数组
  • 面试题-React(三):什么是JSX?它与常规JavaScript有什么不同?
  • 纯前端实现图片上传七牛云
  • win10+wsl2+Ubuntu20.2+Pycharm+WSL解释器
  • EL与JSTL
  • 【Linux】动态库和静态库
  • R语言:联合多指标的ROC曲线
  • 将一个树形结构的数据平铺成一个一维数组(vue3)
  • OSCS开源安全周报第 56 期:Apache Airflow Spark Provider 任意文件读取漏洞
  • CleanMyMac2024永久版Mac清理工具
  • 软考高级系统架构设计师(一)计算机硬件
  • bat文件中自定义cmd命令;执行完退出命令提示符窗口
  • 深度学习的经典算法的论文、解读和代码实现
  • 开源TTS+gtx1080+cuda11.7+conda+python3.9吊打百度TTS
  • 【私有GPT】CHATGLM-6B部署教程
  • 基于“R语言+遥感“水环境综合评价方法教程
  • To_Heart—题解——P6234 [eJOI2019] T形覆盖
  • [软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo
  • Spring BeanName自动生成原理
  • 论文阅读_图形图像_U-NET
  • 基于热交换算法优化的BP神经网络(预测应用) - 附代码
  • 基于秃鹰算法优化的BP神经网络(预测应用) - 附代码
  • 2.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)