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

  • iphone xr支持三维触控吗(苹果xr有没有三维触控的功能)

    iphone xr支持三维触控吗(苹果xr有没有三维触控的功能)

  • 快手发私信怎么知道对方看没看(快手发私信怎么发不出去)

    快手发私信怎么知道对方看没看(快手发私信怎么发不出去)

  • 成都有5g网络吗(成都已经5g全覆盖了吗)

    成都有5g网络吗(成都已经5g全覆盖了吗)

  • 如何查看对方是否看了微信信息(如何查看对方是否把你删除)

    如何查看对方是否看了微信信息(如何查看对方是否把你删除)

  • 6.7英寸的手机多大(6.7英寸的手机多大图片)

    6.7英寸的手机多大(6.7英寸的手机多大图片)

  • 快手直播能回放吗(快3直播)

    快手直播能回放吗(快3直播)

  • tittl00是什么手机(trtal00什么型号)

    tittl00是什么手机(trtal00什么型号)

  • 小新笔记本黑屏了开不了机了(小新笔记本黑屏死机)

    小新笔记本黑屏了开不了机了(小新笔记本黑屏死机)

  • 闲鱼买家收货后钱多久打到账户(闲鱼买家收货后多久可以到账)

    闲鱼买家收货后钱多久打到账户(闲鱼买家收货后多久可以到账)

  • 微信把一个人拉黑了 他知道吗(微信把一个人拉黑再删除还能加回来吗)

    微信把一个人拉黑了 他知道吗(微信把一个人拉黑再删除还能加回来吗)

  • 小米10防水吗(华为x2防水吗)

    小米10防水吗(华为x2防水吗)

  • 小米10青春版支持内存卡吗(小米10青春版支持内存卡扩展吗)

    小米10青春版支持内存卡吗(小米10青春版支持内存卡扩展吗)

  • 网易云审核音乐要多久(网易云审核音乐要多久发布时间)

    网易云审核音乐要多久(网易云审核音乐要多久发布时间)

  • 微信付款码在哪里找(微信付款码在哪里申请)

    微信付款码在哪里找(微信付款码在哪里申请)

  • 黄钻和svip会员有什么区别(黄钻和svip会员一样吗)

    黄钻和svip会员有什么区别(黄钻和svip会员一样吗)

  • kindle索引一般多久(kindle558卡索引)

    kindle索引一般多久(kindle558卡索引)

  • 苹果a1660是什么版本(苹果a1660是什么型号)

    苹果a1660是什么版本(苹果a1660是什么型号)

  • 怎么把步数同步到趣步(怎么把步数同步到桌面)

    怎么把步数同步到趣步(怎么把步数同步到桌面)

  • 头条上的视频怎么保存(头条上的视频怎么隐藏起来)

    头条上的视频怎么保存(头条上的视频怎么隐藏起来)

  • oppo reno有什么功能(opporeno有啥特殊功能)

    oppo reno有什么功能(opporeno有啥特殊功能)

  • 头条直播怎么开通(头条上的直播怎么开)

    头条直播怎么开通(头条上的直播怎么开)

  • 麒麟980采用什么纳米(麒麟980什么时候升级鸿蒙3.0)

    麒麟980采用什么纳米(麒麟980什么时候升级鸿蒙3.0)

  • 强提醒怎么取消(强提醒取消不掉一直在)

    强提醒怎么取消(强提醒取消不掉一直在)

  • 深度学习第一步——Pytorch-Gpu环境配置:Win11/Win10+Cuda10.2+cuDNN8.5.0+Pytorch1.8.0(步步巨细,少走十年弯路)

    深度学习第一步——Pytorch-Gpu环境配置:Win11/Win10+Cuda10.2+cuDNN8.5.0+Pytorch1.8.0(步步巨细,少走十年弯路)

  • 最全面的SpringBoot教程(三)——SpringBoot Web开发(最全面的心脏检查怎么做)

    最全面的SpringBoot教程(三)——SpringBoot Web开发(最全面的心脏检查怎么做)

  • WordPress安装旧版本插件方法(插件降级)(wordpress安装包)

    WordPress安装旧版本插件方法(插件降级)(wordpress安装包)

  • 企业所得税视同销售的会计处理
  • 投资者减除费用和工资薪金减除费用
  • 外经证预交几个点
  • 居民企业股权转让所得
  • 个税专项附加扣除是每个月扣还是按年计算
  • 有限合伙企业分红个人所得税
  • 非正常损失进项税额转出计算公式
  • 餐厅的市场
  • 春节汽车租赁
  • 进项税过期不抵扣怎么写会计分录?
  • 个人持有原始股要交税吗
  • 小规模纳税人核定征收怎么报税
  • 企事业单位承包承租经营
  • 前期差错更正中所得税的会计处理
  • 企业劳务费用怎么处理
  • 收到车险理赔款会计分录
  • 商标设计人享有著作吗
  • 企业零申报用错法人情况说明
  • 自建商品房转为自用增值税
  • 新开办公司前三个月没交社保,后面正常缴纳
  • 苹果手机耳返功能怎么关闭
  • 苹果电脑录屏的视频保存在哪里
  • thinkphp添加数据
  • win10怎么显示隐藏的硬盘
  • PHPfor循环语句10的阶乘
  • 如何查看自己的qq密码
  • win10关闭端口号
  • 2022年苹果iphone14视频配音乐
  • mac怎么保存
  • 员工工伤保险报销条件
  • 公司的清洁费用是什么科目
  • PHP:pcntl_wtermsig()的用法_PCNTL函数
  • 增值税返还政策
  • 坏账损失的核算方法属于会计政策吗
  • wordpress添加css
  • 进项税额转出余额在贷方怎么处理
  • 华侨是否适用个人所得税
  • 税前扣除的比例
  • 行政事业单位怎么开发票
  • js let用法
  • 计提租金怎么做会计分录
  • ps怎么把图片套入样机快捷键
  • 期末调整汇兑损益计算
  • 公司地面硬化财务如何入账
  • 进项税额年末账务处理
  • 织梦cms官网
  • 公司注销后如何追缴税款
  • mysql常用命令行大全
  • 销售自己使用过的物品
  • 预付款为什么不扣质保金呢
  • 税盘抵扣怎么做分录
  • 银行贷款第三方是什么意思
  • 营改增后房屋租赁税变化
  • 信用减值损失会影响营业利润吗
  • 月末假退月初假领
  • 其他业务收入的现金流放哪里?
  • 公司购买承兑需要交税吗
  • 测试账户收入怎么处理
  • 每月增值税怎么做账
  • 营业外支出可以抵扣进项税吗
  • 破产重组还需要还钱吗
  • 研发费用是管理费用的比例多少不正常
  • 外帐和内帐区别
  • mysql优化总结
  • ccs 运行
  • ubuntu安装指南
  • 用iTunes更新iPhone结果盘容量一直减少
  • centos部署django项目
  • win7电脑无限蓝屏怎么解决
  • win10系统附件在哪里
  • 使用权资产
  • perl列表去重
  • android listview属性
  • python3 创建字典
  • node.js可以跨平台吗
  • unity3d坐标系
  • jquery旋转动画
  • python 命令
  • 医院能开增值税开发票吗
  • 国家税务总局在哪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设