位置: IT常识 - 正文

Vue--》计算属性与监视(侦听)属性的使用(vue计算属性和监听属性的区别)

编辑:rootadmin
Vue--》计算属性与监视(侦听)属性的使用

推荐整理分享Vue--》计算属性与监视(侦听)属性的使用(vue计算属性和监听属性的区别),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue中计算属性的原理,vue3的计算属性,vuex 计算属性,vue计算属性参数,vuex 计算属性,vue计算属性和监听属性的区别,vue计算属性可以异步操作?,vue计算属性有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

计算属性(computed)

监视属性(watch)

监视的两种方法

immediate选项

深度监视


计算属性(computed)

计算属性指的是通过一系列运算之后,最终得到一个值。这个动态计算出来的属性值可以被模板结构或methods方法使用,案例如下:

<div id="root"> R:<input type="text" v-model.number="r"><br> G:<input type="text" v-model.number="g"><br> B:<input type="text" v-model.number="b"> <div class="box" :style="{backgroundColor:rgb}"> {{rgb}} </div> <button @click="show">按钮</button></div><script src="/vue/vue.js"></script><script> const vm = new Vue({ el:'#root', data:{ r:0 , g:0, b:0, }, methods: { show() { console.log(this.rgb); } }, //所有计算属性都要定义到computed节点之下 computed: { // 计算属性在定义的时候,要定义成“方法格式”,在这个方法中会生成好的rgb(x,x,x)的字符串 //实现了代码的复用,只要计算属性中依赖的数据变化了,则计算属性会自动重新赋值 rgb() { return `rgb(${this.r},${this.g},${this.b})` } } })</script>

使用名字动态改变实现计算属性案例:

<div id="root"> <input type="text" v-model="firstname"><br> <input type="text" v-model="lastname"><br> 全名:<span>{{fullname}}</span></div><script src="/vue/vue.js"></script><script> const vm = new Vue({ el:"#root", data:{ firstname:'张', lastname:'三' }, computed:{ fullname:{ //当初次读取fullname或所依赖的数据发生变化时,get被调用 get(){ console.log('get被调用了'); return this.firstname+'-'+this.lastname }, //当主动修改fullname时,set被调用 set(value){ console.log('set', value); const arr = value.split('-'); this.firstname = arr[0] this.lastname = arr[1] } } } })</script>

计算属性:

1.定义:要用的属性不存在,要通过已有的属性得来

2.原理:底层借助了Object.defineproperty方法提供的getter和setter

3.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便

4.备注:计算属性最终会出现在vm上,直接读取使用即可;如果计算属性要被修改,那必须写set函数去响应改变,且set中要引起计算时依赖的数据发生改变。

监视属性(watch)

watch监视(侦听)器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。

监视的两种方法

通过new Vue时传入watch配置:

<div id="root"> <input type="text" v-model="name"></div><script src="./vue.js"></script><script> const vm = new Vue({ el:'#root', data:{ name:'' }, //所有的侦听器,都应该被定义到watch节点下 watch:{ // 侦听器本质上是一个函数,要监视哪个数据的变化,就把数据名作为方法名即可 //newVal是“变化后的新值”,oldVal是“变化之前旧值” name(newVal,oldVal){ //监听name值的变化 console.log("监听到了新值"+newVal, "监听到了旧值"+oldVal); } } })</script>

通过vm.$watch监视:

<div id="root"> <h2>今天天气很{{info}}</h2> <button @click="changeWeather">切换天气</button></div><script src="./vue.js"></script><script> const vm = new Vue({ el:'#root', data:{ isHot:true }, computed:{ info(){ return this.isHot ? '炎热' : '凉爽' } }, methods:{ changeWeather(){ this.isHot = !this.isHot } }, }) vm.$watch('info',{ handler(newVal,oldVal){ console.log('天气被修改了', newVal, oldVal); } })</script>

immediate选项Vue--》计算属性与监视(侦听)属性的使用(vue计算属性和监听属性的区别)

默认情况下,组件在初次加载完毕后不会调用watch侦听器,如果想让watch侦听器立即被调用,则需要使用immediate选项,immediate的作用是控制侦听器是否自动触发一次,选项的默认值为:false

<div id="root"> <input type="text" v-model="name"></div><script src="./vue.js"></script><script> const vm = new Vue({ el:'#root', data:{ name:'admin' }, watch:{ //定义对象格式的侦听器 name:{ handler(newVal,oldVal){ console.log(newVal, oldVal); }, immediate:true } } })</script>

深度监视

如果watch侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时需要使用deep选项,开启深度监听,只要对象中任何一个属性变化了,都会触发“对象的侦听器”。

<div id="root"> <input type="text" v-model="info.name"></div><script src="./vue.js"></script><script> const vm = new Vue({ el:'#root', data:{ info:{ name:'admin' } }, watch:{ info: { handler(newVal){ console.log(newVal); }, //开启深度监听 deep:true } } })</script>

如果想要侦听的对象是子属性的变化,则必须包裹一层单引号。

watch:{ "info.name"(newVal){ console.log(newVal); }}

总结:

1)Vue中的watch默认不监测对象内部值的改变(一层)

2)配置deep:true可以监测对象内部值改变(多层)

3)Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以

4)使用watch时根据数据的具体结构,决定是否采用深度监视

watch能开启异步任务,案例如下:

<div id="root"> <input type="text" v-model="firstname"><br> <input type="text" v-model="lastname"><br> 全名:<span>{{fullname}}</span></div><script src="/vue/vue.js"></script><script> const vm = new Vue({ el:"#root", data:{ firstname:'张', lastname:'三', fullname:'张-三' }, //watch能开启异步任务 watch:{ firstname(val){ setTimeout(()=>{ this.fullname = val + '-' + this.lastname },1000) }, lastname(val){ this.fullname = this.firstname+'-'+val } } })</script>

computed和watch之间的区别:

1.computed能完成的功能,watch都可以完成。

2.watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。

隐性原则:

1.被Vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象

2.不被Vue所管理的函数(定时器的回调函数、ajax的回调函数、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm或组件实例对象。

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

上一篇:数以千计的网站使用的FTP凭证被劫持(数以千计的拼音是什么)

下一篇:css三角和css 用户见面样式,vertical-align 属性应用,溢出的文字省略号显示,常见布局技巧(css做三角)

  • wpsword西文字体怎么设置(wps中文字体也应用于西文选项在哪里)

    wpsword西文字体怎么设置(wps中文字体也应用于西文选项在哪里)

  • 手机黑屏开不开而且闪屏(手机黑屏开不开机苹果一直闪屏)

    手机黑屏开不开而且闪屏(手机黑屏开不开机苹果一直闪屏)

  • ipadpro弯了怎么办(ipad pro弯了)

    ipadpro弯了怎么办(ipad pro弯了)

  • 性能和功能的区别是什么(功能和性能 技术指标的区别)

    性能和功能的区别是什么(功能和性能 技术指标的区别)

  • 微信号登录不上怎么办(微信号登录不上钱包有钱怎么办)

    微信号登录不上怎么办(微信号登录不上钱包有钱怎么办)

  • 拼多多是不是阿里巴巴的(拼多多是不是阿里巴巴其实是不是接的阿里巴巴全国代理)

    拼多多是不是阿里巴巴的(拼多多是不是阿里巴巴其实是不是接的阿里巴巴全国代理)

  • 荣耀手机如何隐藏应用程序(荣耀手机如何隐藏app)

    荣耀手机如何隐藏应用程序(荣耀手机如何隐藏app)

  • 苹果认证的第三方电池有哪些(苹果认证的第三方)

    苹果认证的第三方电池有哪些(苹果认证的第三方)

  • 一个钉钉号可以同时看两个直播吗(一个钉钉号可以看两个直播吗)

    一个钉钉号可以同时看两个直播吗(一个钉钉号可以看两个直播吗)

  • 苹果手机刷朋友圈卡顿怎么回事(苹果手机刷朋友圈时下面变黑一下)

    苹果手机刷朋友圈卡顿怎么回事(苹果手机刷朋友圈时下面变黑一下)

  • 计算机存储整数最常用的方法(整数在计算机内存中以什么形式储存)

    计算机存储整数最常用的方法(整数在计算机内存中以什么形式储存)

  • 小米手机没有4g信号了怎么处理(小米手机没有4G网怎么回事?)

    小米手机没有4g信号了怎么处理(小米手机没有4G网怎么回事?)

  • 电脑上可以下载抖音吗(电脑上可以下载韩剧tv吗)

    电脑上可以下载抖音吗(电脑上可以下载韩剧tv吗)

  • 爱奇艺签到可以补签吗(爱奇艺 签到)

    爱奇艺签到可以补签吗(爱奇艺 签到)

  • 华为p30pro喇叭进水(华为p30喇叭有嘶嘶)

    华为p30pro喇叭进水(华为p30喇叭有嘶嘶)

  • 手机微信反应慢是怎么回事(手机微信反应慢接不到信息是怎么回事)

    手机微信反应慢是怎么回事(手机微信反应慢接不到信息是怎么回事)

  • 美图秀秀怎么换背景(美图秀秀怎么换脸p图)

    美图秀秀怎么换背景(美图秀秀怎么换脸p图)

  • 万门大学视频怎么导出(万门大学视频下载地址)

    万门大学视频怎么导出(万门大学视频下载地址)

  • wps手机版怎么打勾(Wps手机版怎么打印)

    wps手机版怎么打勾(Wps手机版怎么打印)

  • 支付宝征信在哪里(支付宝征信在哪里关)

    支付宝征信在哪里(支付宝征信在哪里关)

  • oppor17多重(oppor17机身重量)

    oppor17多重(oppor17机身重量)

  • 如何找回Windows XP系统密码啊?(如何找回windows密钥)

    如何找回Windows XP系统密码啊?(如何找回windows密钥)

  • 小企业会计准则适用于哪些企业
  • 视同销售行为涉税处理?
  • 营业执照丢失公示几天才能注销
  • 合作社开具的免税农产品发票
  • 研发人员的社保也要进入研发费用吗
  • 成品油认证后要开票怎么做
  • 国家税务局发票查询真伪
  • 开仓库需要营业执照吗
  • 出让固定资产怎样计算增值税
  • 成本还原有什么作用
  • 会计分录怎么确认借贷方向
  • 合并报表时存货怎么处理
  • 固定资产盘亏造成的损失计入什么科目
  • 返利回收期怎么计算
  • 影响所得税金额的因素有哪些
  • 不动产抵扣涉及净值,这里的净值是否扣除减值准备,是否扣除不动产改变用途当月的折旧额?
  • 国税登记流程
  • 个人车卖给公司可以抵税吗
  • 免税销售额对应的进项税额
  • 工会费是税前扣除还是税后扣除
  • 业务招待费有增值税吗
  • 支付给外单位的押金是其他应收款吗
  • 商品残次品怎样定义
  • win10设置系统启动
  • windows10无法连接到打印机,拒绝访问
  • .exe文件怎么打不开
  • 系统还没完善
  • Tip是什么意思英语
  • 下载的压缩文件打不开
  • php和ajax用哪个调用数据
  • 会计费用科目分类表
  • 建筑企业异地预缴企业所得税
  • 终身职业技能培训
  • HTML怎么设置文本框
  • 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)
  • Chatgpt私有化部署(全流程)
  • 人工智能大模型体验报告3.0
  • 目标检测tricks
  • thinkphp自定义标签
  • 芝麻信用app
  • 建筑施工企业增值税老项目过度期成本票
  • java string.class
  • Building a HTTP Proxy
  • 出口退税转内销还是转免税好
  • 企业结售汇业务需要做什么
  • 用友t3系统功能怎么用
  • 长期股权投资为什么不是所有者权益
  • 小型商贸企业
  • 税务开票金额每个月有限制吗
  • 我国居民企业判断标准
  • 收到利息收入如何做分录
  • 冲个人借款分录怎么写
  • 冲减上年度多计提所得税
  • 计提社保个人部分会计分录
  • 差旅费记入哪个费用
  • 企业中的消费环境分析
  • 小规模纳税人交通运输服务税率
  • 企业主要的工会是什么
  • 股票交易费用计算器小程序
  • 会计师事务所工作怎么样
  • 记账报税属于会计什么职位
  • sql server的数据库
  • win8启动文件夹在哪里
  • rcapi.exe - rcapi是什么进程 有什么用
  • windows10更新推送
  • winxp开启远程控制
  • android搭建环境
  • android基础入门教程
  • 使用一串代码
  • android的intent介绍
  • ubuntu20.04怎么安装
  • android 界面切换
  • 北京中石化开增票各区网点
  • 内蒙古国家税务
  • 辽宁地方税务局发票查询
  • 企业所得税申报表怎么填写
  • 狠抓组织收入工作
  • 税收公司法人有风险么
  • 掌上12333怎么交社保卡费用
  • 叶青和奚卫华
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设