位置: IT常识 - 正文

vue3【计算属性与监听-详】(vue使用计算属性)

编辑:rootadmin
vue3【计算属性与监听-详】 一、计算属性--简写形式

推荐整理分享vue3【计算属性与监听-详】(vue使用计算属性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue 计算属性,vue2计算属性,vue计算属性怎么用,vue3 计算属性,vue2计算属性,vue3 计算属性,vue计算属性怎么用,vue3.0 计算属性,内容如对您有帮助,希望把文章链接给更多的朋友!

需求:通过计算属性,计算一个人的全名。

<template> <h1>基本信息</h1> 姓:<input type="text" v-model="personInfo.firstName"> <hr> 名:<input type="text" v-model="personInfo.lastName"> <hr> <span>全名:{{fullName}}</span></template><script>import { ref, reactive,computed} from 'vue'export default { name: 'Demo', components: { }, setup() { // 数据 let personInfo = reactive({ firstName:'张', lastName:'三' }) // 计算属性 let fullName = computed(()=>{ return personInfo.firstName+'-'+personInfo.lastName }) // 返回一个对象(常用) return { personInfo, fullName } },}</script>

 

计算属性同样是传入一个回调函数 

>>>这时候有人问,我的全名不应该放在personInfo里面嘛,不应该单独列出来。

答:说的对,接下来我们看一下如何放入personInfo里面,并实现计算。

很简单,直接在personInfo身上追加一个属性fullName即可。因为personInfo是由reactive定义的,所以可以对它身上的属性随便增删改查,而且能确保都是响应式的

注意:上面的计算属性是简写形式(没有考虑计算属性被修改的情况) 

使用的时候,改成下面这样就ok了。 

 

 >>>问题来了,如果计算属性想被修改怎么办?

就像下面这样,,,

 此时我们去修改计算属性,控制台就会出现警告,提示,你这个计算属性是只读的

二、计算属性--完整形式 

 那么考虑计算属性的读和写的【完整写法】如下:

personInfo.fullName = computed({ // 读 get(){ return personInfo.firstName + '-' + personInfo.lastName }, // 写 set(value){ console.log(value) const name = value personInfo.firstName = name.split('-')[0] personInfo.lastName = name.split('-')[1] } })

此时当我们修改计算属性的值,属性的值也会跟着变化 

三、watch监听ref定义的数据

先看下vue2监听的简写写法及结果 

<template> <h1>当前求和为:{{sum}}</h1> <button @click="sum++">点我加1</button></template><script>import { ref, reactive, computed } from 'vue'export default { name: 'Demo', components: {}, // vue2监听写法 watch: { sum(newValue, oldValue) { console.log('sum的值变化了', newValue, oldValue) } }, setup() { let sum = ref(0) // 返回一个对象(常用) return { sum, } },}

 vue2的完整写法如下,可以设置immediate:true以及deep:true:

 

 好了,vue2回顾之后,我们看一下vue3的监听如何写。

注意:vue3是组合式api的写法,因此我们首先要引入watch,watch在这里是一个函数一个行为,因此他不需要通过接收,直接调用即可

----------------【监听ref单个数据 】------------------ 

 

 效果一样、

 

 ----------------【监听ref多个数据 】------------------ 

有人说,那我写2个监听不就好了----

答:说实话也行,就是代码冗余,方法过于笨拙,哈哈

 效果是可以实现的,并且这种写法也只有vue3了,vue2里面还不能出现2个watch,哈哈

 

正确写法如下:

将监听的多个值写到一个数组里面,一起监听,当然newValue和oldValue也是同样以数组的形式表示值的变化

vue3【计算属性与监听-详】(vue使用计算属性)

 看下效果,我分别点了以下2次按钮,出现2个监听结果的打印

 注意:watch一共可以接收3个参数。

        第一个是监听的对象。

        第二个是回调函数。

        第三个当然是设置深度监听以及立即执行的地方啦!

这样写即可。 

  

 三、watch监听reactive定义的数据

 ----------------【监听reactive所定义的一个响应式数据的全部属性 】------------------ 

 

 发现监听reactive好像有个坑。

注意:监听reactive所定义的一个响应式数据,此处无法正确获取oldValue。

如果开发过程中确实需要用到oldValue,那建议单独用ref去定义,不要写在对象里面用reactive定义,这样无法正确获取

 这时候我们将reactive嵌套的深一点

         

 发现监听reactive的时候,嵌套的很深,会默认开启deep:true,可以直接监听到,也不能关闭。

总结:监听reactive所定义的一个响应式数据

        1、注意:此处无法正确获取oldValue

        2、注意:强制开启了深度监视(deep配置无效)

----------------【监听reactive所定义的一个响应式数据中的某个属性 】------------------ 

有人说我直接这样就好了呀。 

 

 看下结果行不行,貌似不行,有一个警告,告诉我们,只能监听一个ref、一个reactive对象、或者是这些属性的数组。所以我们这么写是不对的

 需要写成一个函数,去返回一个你想监听的属性

 ----------------【监听reactive所定义的一个响应式数据中的多个属性 】------------------ 

 写成数组就好了

 ----------------【特殊情况】------------------ 

此处由于监视的事reactive所定义的对象中的某个属性,所以deep配置有效 ,但是oldValue仍然无法正确获取、只要监听的是一个对象都无法正确获取

 四、watchEffect函数

 s

 使用方法:

 watchEffect是如何实现监听的呢?

他监听的是,回调函数里面用到谁就监听谁;没用到的不会触发监听,而且,他一上来就会调用一次,等价于加了immediate:true

 总结:

本文链接地址:https://www.jiuchutong.com/zhishi/295863.html 转载请保留说明!

上一篇:【类ChatGPT】本地CPU部署中文羊驼大模型LLaMA和Alpaca

下一篇:Bootstrap 框架详解(bootstrap框架的理解)

  • iwatch电量怎么显示(iwatch的电量在哪看)

    iwatch电量怎么显示(iwatch的电量在哪看)

  • x触屏失灵如何关机(x触摸不灵敏)

    x触屏失灵如何关机(x触摸不灵敏)

  • 验证电子邮件的验证码是发到哪里(验证电子邮件的验证码怎么验证)

    验证电子邮件的验证码是发到哪里(验证电子邮件的验证码怎么验证)

  • 苹果手机qq邮箱下载的文件在哪里(苹果手机qq邮箱下载的文件在哪)

    苹果手机qq邮箱下载的文件在哪里(苹果手机qq邮箱下载的文件在哪)

  • 栈经常被称为什么表(栈又称为什么表)

    栈经常被称为什么表(栈又称为什么表)

  • 华为休眠时间怎么设置成永久(华为休眠时间怎么设置不了)

    华为休眠时间怎么设置成永久(华为休眠时间怎么设置不了)

  • 荣耀v10有红外功能吗(honor v10有没有红外)

    荣耀v10有红外功能吗(honor v10有没有红外)

  • 第一次装宽带要不要买路由器(第一次装宽带要安装费吗)

    第一次装宽带要不要买路由器(第一次装宽带要安装费吗)

  • 移动信号hd什么意思(移动信号上hd什么意思)

    移动信号hd什么意思(移动信号上hd什么意思)

  • 平板电脑频繁自动关机(平板电脑频繁自动关机什么原因呢)

    平板电脑频繁自动关机(平板电脑频繁自动关机什么原因呢)

  • 录像怎么美颜(小米手机录像怎么美颜)

    录像怎么美颜(小米手机录像怎么美颜)

  • oppo手机怎么清理运行程序(oppo手机怎么清理内存空间不足)

    oppo手机怎么清理运行程序(oppo手机怎么清理内存空间不足)

  • 苹果手机主题怎么设置成自己喜欢的(苹果手机主题怎么设置)

    苹果手机主题怎么设置成自己喜欢的(苹果手机主题怎么设置)

  • 记事本写字板word区别(记事本写字板画图)

    记事本写字板word区别(记事本写字板画图)

  • 显示器hdcp功能是什么(显示器hdcp功能重要吗)

    显示器hdcp功能是什么(显示器hdcp功能重要吗)

  • 手机淘宝隐藏评价如何恢复(手机淘宝隐藏评价怎么删除待评价信息)

    手机淘宝隐藏评价如何恢复(手机淘宝隐藏评价怎么删除待评价信息)

  • 华为荣耀10青春版支持OTG吗(华为荣耀10青春版拆机视频)

    华为荣耀10青春版支持OTG吗(华为荣耀10青春版拆机视频)

  • 群聊坦白说是什么功能(群聊坦白说是什么意思)

    群聊坦白说是什么功能(群聊坦白说是什么意思)

  • 趣步不显示步数怎么办(趣步不显示步数是什么原因)

    趣步不显示步数怎么办(趣步不显示步数是什么原因)

  • 闲鱼Family是什么(闲鱼isnb)

    闲鱼Family是什么(闲鱼isnb)

  • 快手说说怎么删除(快手说说怎么删除评论)

    快手说说怎么删除(快手说说怎么删除评论)

  • monitr32.exe是什么进程 有什么作用 monitr32进程查询(nmeo.exe是什么)

    monitr32.exe是什么进程 有什么作用 monitr32进程查询(nmeo.exe是什么)

  • 君子兰的养殖方法和注意事项(君子兰的养殖方法)

    君子兰的养殖方法和注意事项(君子兰的养殖方法)

  • css深度选择器deep(css选择器nth)

    css深度选择器deep(css选择器nth)

  • 个体工商户定期定额征收个人所得税
  • 中级考试报了三门,只考两门行吗
  • 附加税减半征收的条件
  • 工程类工资表为哪些内容
  • 支付残疾人保证金的账务处理
  • 先分后合是什么意思
  • 财务报表中利润率怎么算
  • 暂估工资成本
  • 股东个人向公司借款会计分录
  • 叉车需要购置税吗
  • 长期股权投资的账务处理
  • 公司报销费用发票怎么开
  • 坐收坐支在会计上如何反映
  • 不动产进项税额分两年抵扣
  • 免税产品的销项税
  • 用友如何取消月末结转
  • 工程项目劳务分包合同范本
  • 公司没车但是有加油费发票怎么处理?
  • 产品成本的归集和分配是什么意思
  • 企业财产保险费率的影响因素
  • 一般纳税人增值税申报操作流程
  • 汽车配件的税收编码是多少
  • 增值税返还收入冲减进项税
  • 2019年化妆品
  • 保险费做什么会计分录
  • 促销礼物
  • windows11正式版好用吗
  • avcodec是什么意思
  • 微软的客户主要是什么
  • 不属于职工福利费的是抚恤费
  • 记帐凭证由谁填制
  • lvgl使用
  • 应付账款会计分离
  • 认缴制注册资金不交可以吗
  • 为什么增值税最后有余额附加税没有
  • 湿地上有什么植物
  • 前端项目中遇到的问题,如何解决
  • 企业租赁发票税率是多少2023年
  • 小微企业城建税及附加减免优惠
  • JavaScript ,18种常用数组方法,快来看看你会吗?
  • php实现将base64格式图片保存在指定目录的方法
  • 非限定性收入属于什么科目?
  • 微信小程序分包中插件样式丢失
  • 财政拨付注册资本金说明
  • 将房产以股权形式出售
  • 生产型出口企业的概念
  • 销项税额和进项税额月底怎么结转
  • 保险理赔进项税额转出
  • 劳动合同要给税收吗
  • 棚户区改造国家给政府拨款吗
  • 企业取得财产转让收入
  • 公司的房租发票怎么开
  • 酒店会计的账务处理
  • 计提是好是坏
  • 收到专票可以不签字吗
  • windows命令提示符重启
  • win108080端口怎么打开
  • smss.exe是干嘛的
  • nddeagnt.exe - nddeagnt是什么进程 有什么用
  • linux内核编程指南
  • win7系统怎么调出运行窗口
  • js require()
  • [置顶]bilinovel
  • 游戏类游戏开发
  • es6展开符
  • virtualbox装linux
  • Bullet(Cocos2dx)之封装PhysicsWorld3D
  • cocos2d开发的知名游戏
  • unity画面效果润色
  • rhel7.6安装
  • 如何消除手机自动出现的广告
  • javascript entries
  • node chain
  • python3.9多线程
  • gin项目
  • 怎么在手机开数据那里看用了多少流量
  • 北京市税务局 案件
  • 破产重整资产的税务优惠
  • 报税的资格
  • 北京市大兴区税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设