位置: 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框架的理解)

  • 荣耀v30pro对比华为p40pro(荣耀v30pro对比华为p40)

    荣耀v30pro对比华为p40pro(荣耀v30pro对比华为p40)

  • 电脑重置后键盘不能用了(电脑重置后键盘没反应)

    电脑重置后键盘不能用了(电脑重置后键盘没反应)

  • 打开网页手机滴滴响(打开网页手机滴滴滴响)

    打开网页手机滴滴响(打开网页手机滴滴滴响)

  • 只显示对方更新了说说(对方显示更新了说说是什么意思)

    只显示对方更新了说说(对方显示更新了说说是什么意思)

  • 微信听筒模式要打开吗

    微信听筒模式要打开吗

  • ev录屏声音太小怎么办(ev录屏音量小)

    ev录屏声音太小怎么办(ev录屏音量小)

  • 华为骨声纹有什么用(华为的骨声纹)

    华为骨声纹有什么用(华为的骨声纹)

  • 苹果连拍的照片怎么只有一张(苹果连拍的照片怎么展开)

    苹果连拍的照片怎么只有一张(苹果连拍的照片怎么展开)

  • 为什么看看手机就热了(为什么看看手机就睡着了)

    为什么看看手机就热了(为什么看看手机就睡着了)

  • 拼多多助力同一个用户可以几次(拼多多助力同一设备多次)

    拼多多助力同一个用户可以几次(拼多多助力同一设备多次)

  • 连接路由器的盒子叫什么(连接路由器的盒子怎么用)

    连接路由器的盒子叫什么(连接路由器的盒子怎么用)

  • 封面的横线怎么对齐(封面的横线怎么右对齐)

    封面的横线怎么对齐(封面的横线怎么右对齐)

  • 微信扫脸支付怎么设置(微信扫脸支付怎么换人)

    微信扫脸支付怎么设置(微信扫脸支付怎么换人)

  • 优化iphone储存空间什么意思(优化iPhone储存空间后 没有变)

    优化iphone储存空间什么意思(优化iPhone储存空间后 没有变)

  • 分辨率和屏幕大小有关吗(分辨率和屏幕大有关系吗)

    分辨率和屏幕大小有关吗(分辨率和屏幕大有关系吗)

  • 苹果平板怎么下载软件(苹果平板怎么下载微信)

    苹果平板怎么下载软件(苹果平板怎么下载微信)

  • 手机突然重启怎么回事(手机突然重启怎么回事红米)

    手机突然重启怎么回事(手机突然重启怎么回事红米)

  • 小米摄像头离线怎么弄(小米摄像头离线了还能录像吗?)

    小米摄像头离线怎么弄(小米摄像头离线了还能录像吗?)

  • word角标数字怎么打(word数字脚标)

    word角标数字怎么打(word数字脚标)

  • 酷我音乐如何开直播(酷我音乐如何开通音乐包)

    酷我音乐如何开直播(酷我音乐如何开通音乐包)

  • 美易怎么取消自动订阅(美易怎样取消自动续费)

    美易怎么取消自动订阅(美易怎样取消自动续费)

  • 抖音怎么开启儿童模式(抖音怎么开启儿童权限)

    抖音怎么开启儿童模式(抖音怎么开启儿童权限)

  • 最右刷新不出来(最右刷新一次有多少帖子)

    最右刷新不出来(最右刷新一次有多少帖子)

  • 微博照片水印设置苹果教程(微博 照片水印)

    微博照片水印设置苹果教程(微博 照片水印)

  • Debian更换国内源解决安装软件速度慢问题并且卸载exim4服务(debian更换国内源教程)

    Debian更换国内源解决安装软件速度慢问题并且卸载exim4服务(debian更换国内源教程)

  • 视同销售收入是纳税调整项目吗?
  • 进口增值税电子税单抵扣
  • 体检怎么写公司抬头
  • 房地产企业回迁房增值税
  • 终止销售关系怎么处理
  • 会计凭证归档后几年后可销毁
  • 长期股权投资会减值损失吗
  • 土地投资入股是否需要发票作为企业所得税税前扣除凭证
  • 虚减利润如何进行账务调整?
  • 进口环节关税税率
  • 一次性付清货款要交税吗
  • 天猫开发票需要确认收货吗?
  • 自开租赁费发票税率是多少?
  • 所得税汇算调增调减是什么意思
  • 印花税按次申报怎么报
  • 资产改变用途的法律规定
  • 培训过程中出现的问题及解决办法
  • 过路费企业所得税汇算清缴计入什么科目?
  • 增值税专用发票的税率是多少啊
  • 政府性基金预算收入包括
  • 返利计提分录
  • iphone有没有
  • 企业应纳税所得额计算公式
  • php面向对象实例
  • 鸿蒙系统如何隐藏文件
  • pop是什么文件
  • w10如何删除微软拼音
  • 装修费用账务怎么处理
  • 收到单据
  • TypeError: Cannot read properties of null (reading ‘insertBefore‘) vue项目报错
  • 供应商发票多开了怎么处理?
  • paypal付款会自动换汇吗
  • php读取数据库复选框数据
  • 对公收费明细入账计入什么科目
  • 分割sw
  • web2的核心理念
  • 软件开发服务费开票税目
  • python操作csv
  • 原材料暂估入库成本结转处理
  • 溢价发行股票相关手续费计入
  • 著作权费用
  • 建筑劳务税率是13还是6
  • 金蝶软件资产负债表公式设置
  • 会计成本确认
  • java集合框架主要有
  • 公司费用计入什么科目
  • 非公司员工可以报销差旅费吗
  • 医院能开增值发票吗
  • 建筑劳务公司的税率是多少
  • 可以公账户给私人转账吗
  • 企业征收所得税会计分录
  • 申报个人所得税的软件叫什么
  • 收到费用发票没有付款的会计分录
  • 车船税怎么计账
  • 查定征收在哪一章
  • 企业将资金用于购买原材料属于什么过程
  • 工程增值税抵扣比例
  • 直接人工成本包括管理人员开的工资吗
  • 营业外支出科目核算内容
  • 项目建设期间所涉及的税
  • 蔬菜公司开具专票可以抵扣吗
  • 贴现汇票到期收回时
  • 暂领款是什么意思
  • 结转已售材料成本6000元
  • 审计真实性认定
  • sql语句的执行方式
  • 惠普tpn-c126笔记本
  • 台式电脑NUM LOCK键还能亮,算不算死机了
  • 局域网 下载
  • 老毛桃U盘启动盘工具安装Win8的详细图文教程
  • Mac怎么更改锁屏密码
  • Linux驱动程序开发视频教程
  • windows10不能装windows7
  • bootstrap模态窗口
  • 解决Android Studio下载gradle慢
  • import python-docx
  • asx文件的作用
  • 怎么查询企业类别
  • 深圳国委
  • 特定公共服务是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设