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

  • 作为市场人,一定要知道这几个互联网推广渠道!(成为市场)

    作为市场人,一定要知道这几个互联网推广渠道!(成为市场)

  • 抖音直播间可以设置密码吗(抖音直播间可以说微信吗)

    抖音直播间可以设置密码吗(抖音直播间可以说微信吗)

  • 爱情树退出后会通知对方吗(爱情树退出了怎么还原)

    爱情树退出后会通知对方吗(爱情树退出了怎么还原)

  • Excel怎么把筛选出来的内容复制到另一个表格中(excel怎么把筛选出的数据删除)

    Excel怎么把筛选出来的内容复制到另一个表格中(excel怎么把筛选出的数据删除)

  • 小米mixalpha什么时候开卖(小米mixalpha什么时候开的发布会)

    小米mixalpha什么时候开卖(小米mixalpha什么时候开的发布会)

  • pixiv怎么注册不了(pixiv手机注册不了怎么办)

    pixiv怎么注册不了(pixiv手机注册不了怎么办)

  • 封口机通电不加热是怎么回事(封口机通电不加热风扇不转)

    封口机通电不加热是怎么回事(封口机通电不加热风扇不转)

  • 怎么投诉卖家48小时未发货(怎么投诉卖家虚假发货)

    怎么投诉卖家48小时未发货(怎么投诉卖家虚假发货)

  • 淘宝不发货投诉赔多少(淘宝不发货投诉成功了还发货吗)

    淘宝不发货投诉赔多少(淘宝不发货投诉成功了还发货吗)

  • 苹果bs手机是什么意思(苹果手机bs机是什么机)

    苹果bs手机是什么意思(苹果手机bs机是什么机)

  • 通讯录拉黑还能收到对方的信息吗(通讯录拉黑还能发短信吗?)

    通讯录拉黑还能收到对方的信息吗(通讯录拉黑还能发短信吗?)

  • 已发朋友圈再修改分组(已发朋友圈再修改文案)

    已发朋友圈再修改分组(已发朋友圈再修改文案)

  • word文档怎么取消标注(word文档怎么取消自动编号)

    word文档怎么取消标注(word文档怎么取消自动编号)

  • 华为怎么恢复杂志锁屏(华为怎样恢复)

    华为怎么恢复杂志锁屏(华为怎样恢复)

  • 戴尔笔记本怎么设置指纹解锁(戴尔笔记本怎么强制重启)

    戴尔笔记本怎么设置指纹解锁(戴尔笔记本怎么强制重启)

  • Reno Ace怎么进行视频编辑(oppo reno ace游戏模式怎么开)

    Reno Ace怎么进行视频编辑(oppo reno ace游戏模式怎么开)

  • 怎么把微信签名放中间(怎么把微信签名竖着写)

    怎么把微信签名放中间(怎么把微信签名竖着写)

  • 如何使iwatch屏幕常亮(iwatch怎么让屏幕暗掉)

    如何使iwatch屏幕常亮(iwatch怎么让屏幕暗掉)

  • 网易云如何设置车载歌词(网易云如何设置听歌背景)

    网易云如何设置车载歌词(网易云如何设置听歌背景)

  • leloa什么牌子手机(leloa什么牌子手机质量怎样,是杂牌机吗)

    leloa什么牌子手机(leloa什么牌子手机质量怎样,是杂牌机吗)

  • 抖音水彩滤镜道具在哪里(抖音色彩涟漪滤镜)

    抖音水彩滤镜道具在哪里(抖音色彩涟漪滤镜)

  • shadowrocket是干嘛的

    shadowrocket是干嘛的

  • 天正工具栏调不出来(天正工具栏没反应)

    天正工具栏调不出来(天正工具栏没反应)

  • 个人简历html网页代码(使用chatgpt完成web开发课的实验)(个人简历html网页代码含效果图)

    个人简历html网页代码(使用chatgpt完成web开发课的实验)(个人简历html网页代码含效果图)

  • 网上申报办税
  • 出差加油算什么费用
  • 个人所得税分摊方式月扣除金额修改
  • 送货运杂费属于什么费用
  • 向个人账户汇款选项
  • 进口奶牛缴纳增值税
  • 房地产企业可以贷款吗
  • 没有收汇可以申报吗
  • 应付借款利息分录
  • 长期挂账其他应付款违反了哪项制度
  • 联营企业的持股比例
  • 税收分类编码如何添加
  • 企业增值税普通发票和增值税专用发票
  • 报销发票财务一旦作废报销人可以收回吗?
  • 金税盘怎么清盘视频
  • 营改增后转让土地使用权怎么计算增值税
  • 预提费用的会计科目
  • 退货入库流程图
  • 备查账要如何设置?
  • 款已付发票未到怎么做结转成本
  • 工程出差主要是做什么
  • 公司旅游费用怎么入账
  • 其他应付款和其他应付款对冲
  • win10重装系统后网卡没了
  • php和py
  • 出国考察是什么意思
  • phpinfo页面
  • 关于出售使用过的东西
  • python网络爬虫技术
  • php md5 16位
  • quota命令 显示磁盘已使用的空间与限制
  • 升级到miui14感觉耗电快了
  • 应交税费如何调整
  • 小规模纳税人进项税额怎么处理
  • 发票明细清单怎么打印
  • 营运资金为正数说明企业什么
  • 利润表中的本期金额和本年累计金额
  • 企业保持存货的必要性
  • 营业账簿印花税申报流程
  • 固定资产减少处理
  • 出口货物退运已补税(未退税)证明
  • 非限定性净资产和限定性净资产的区别
  • 福州锦元房地产开发有限
  • 税控系统技术维护费会计处理
  • 公司自己搭建的房子出租可以按投资性房地产吗
  • 异地建筑服务开全电发票
  • 开票未收到款会计分录
  • 公司抽奖的成本怎么算
  • 公司利润太高了怎么办
  • 企业所得税季报营业成本包括哪些
  • 生产费用明细账
  • sql语句错误提示
  • sqlserver数据库最快存储时间
  • sql数据库怎样批量添加数据
  • win8系统安装步骤
  • windows server 2008的技巧:防止ping的方法
  • windowmsgserver32是什么
  • win10默认edge浏览器
  • mac 设置
  • spmgr.exe - spmgr是什么进程 有什么用
  • w8系统怎么用
  • exgear是什么
  • win7打开回收站
  • win7系统如何给文件夹加密
  • linux系统修复
  • android打包v1v2
  • android从服务器获取数据
  • ie支持es6
  • python3循环语句
  • python转换语句
  • javascript面向对象编程指南
  • 查询某个时间段
  • vue怎样使用
  • jquery怎么打开
  • js clearInterval()方法的定义和用法
  • js调用失败
  • 广东省国家税务局电子税务局官网
  • 街道税务所职责和任务
  • 如何查询哈尔滨医院药品信息
  • 河北省电子税务局官网app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设