位置: IT常识 - 正文

VUE3 数据的侦听(vue3当中如何监听新增的属性)

编辑:rootadmin
VUE3 数据的侦听

推荐整理分享VUE3 数据的侦听(vue3当中如何监听新增的属性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3监听数组,vue3监听,vue监听数据变化的事件怎么写,vue侦听属性,vue数据监听原理,vue3监听数组,vue数据监听原理,vue数据监听原理,内容如对您有帮助,希望把文章链接给更多的朋友!

侦听数据变化也是组件里的一项重要工作,比如侦听路由变化、侦听参数变化等等。

Vue 3 在保留原来的 watch 功能之外,还新增了一个 watchEffect 帮助更简单的进行侦听。

watch 在 Vue 3 ,新版的 watch 和 Vue 2 的旧版写法对比,在使用方式上变化非常大! 回顾 Vue 2 在 Vue 2 是这样用的,和 data 、 methods 都在同级配置:

export default { data() { return { // ... } }, // 注意这里,放在 `data` 、 `methods` 同个级别 watch: { // ... }, methods: { // ... },}VUE3 数据的侦听(vue3当中如何监听新增的属性)

并且类型繁多,选项式 API 的类型如下:

watch: { [key: string]: string | Function | Object | Array}

联合类型过多,意味着用法复杂,下面是个很好的例子,虽然出自 官网 的用法介绍,但过于繁多的用法也反映出来对初学者不太友好,初次接触可能会觉得一头雾水:

export default { data() { return { a: 1, b: 2, c: { d: 4, }, e: 5, f: 6, } }, watch: { // 侦听顶级 Property a(val, oldVal) { console.log(`new: ${val}, old: ${oldVal}`) }, // 字符串方法名 b: 'someMethod', // 该回调会在任何被侦听的对象的 Property 改变时被调用,不论其被嵌套多深 c: { handler(val, oldVal) { console.log('c changed') }, deep: true, }, // 侦听单个嵌套 Property 'c.d': function (val, oldVal) { // do something }, // 该回调将会在侦听开始之后被立即调用 e: { handler(val, oldVal) { console.log('e changed') }, immediate: true, }, // 可以传入回调数组,它们会被逐一调用 f: [ 'handle1', function handle2(val, oldVal) { console.log('handle2 triggered') }, { handler: function handle3(val, oldVal) { console.log('handle3 triggered') }, /* ... */ }, ], }, methods: { someMethod() { console.log('b changed') }, handle1() { console.log('handle 1 triggered') }, },}

当然肯定也会有开发者会觉得这样选择多是个好事,选择适合自己的就好,但笔者还是认为这种写法对于初学者来说不是那么友好,有些过于复杂化,如果一个用法可以适应各种各样的场景,岂不是更妙?

TIP另外需要注意的是,不能使用箭头函数来定义 Watcher 函数 (例如 searchQuery: newValue => this.updateAutocomplete(newValue) )。因为箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向组件实例, this.updateAutocomplete 将是 undefined 。

Vue 2 也可以通过 this.$watch() 这个 API 的用法来实现对某个数据的侦听,它接受三个参数: source 、 callback 和 options 。

export default { data() { return { a: 1, } }, // 生命周期钩子 mounted() { this.$watch('a', (newVal, oldVal) => { // ... }) },}

由于 this.$watch 的用法和 Vue 3 比较接近,所以这里不做过多的回顾,请直接看 了解 Vue 3 部分。

了解 Vue 3 在 Vue 3 的组合式 API 写法, watch 是一个可以接受 3 个参数的函数(保留了 Vue 2 的 this.$watch 这种用法),在使用层面上简单了很多。

import { watch } from 'vue'// 一个用法走天下watch( source, // 必传,要侦听的数据源 callback // 必传,侦听到变化后要执行的回调函数 // options // 可选,一些侦听选项)

下面的内容都基于 Vue 3 的组合式 API 用法展开讲解。 API 的 TS 类型 在了解用法之前,先对它的 TS 类型

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

上一篇:【前端修炼之路】第一话 · 初识前端领域(前端高手进阶)

下一篇:css深度选择器deep(css选择器nth)

  • 抖音设置好友可见粉丝还可以看见吗(抖音设置好友可见为什么还有播放量)

    抖音设置好友可见粉丝还可以看见吗(抖音设置好友可见为什么还有播放量)

  • 微信导聊天记录到另一个手机(微信导聊天记录教程)

    微信导聊天记录到另一个手机(微信导聊天记录教程)

  • vivo手机卡顿反应慢怎么解决(vivo手机卡顿反应慢是中毒了吗)

    vivo手机卡顿反应慢怎么解决(vivo手机卡顿反应慢是中毒了吗)

  • 华为荣耀30pro耳机怎么用(华为荣耀30pro耳机孔在哪里)

    华为荣耀30pro耳机怎么用(华为荣耀30pro耳机孔在哪里)

  • 腾讯会议最多支持多少人同时视频(腾讯会议最多支持多少人参会)

    腾讯会议最多支持多少人同时视频(腾讯会议最多支持多少人参会)

  • 拼多多直播为什么美颜没瘦脸(拼多多直播为什么会被限流)

    拼多多直播为什么美颜没瘦脸(拼多多直播为什么会被限流)

  • qq为什么上传不了照片到照片墙(qq为什么上传不了头像)

    qq为什么上传不了照片到照片墙(qq为什么上传不了头像)

  • vivox6有没有分屏功能(vivox6分屏)

    vivox6有没有分屏功能(vivox6分屏)

  • iphonexr美版能用双卡吗(苹果xr美版可以用移动卡吗)

    iphonexr美版能用双卡吗(苹果xr美版可以用移动卡吗)

  • 怎么卸载华为云空间(如何卸载华为手机云空间)

    怎么卸载华为云空间(如何卸载华为手机云空间)

  • vue字幕字太小怎么调(vue字幕怎么移动位置)

    vue字幕字太小怎么调(vue字幕怎么移动位置)

  • 华为mate30与mate20的区别(华为mate30与mate20pro)

    华为mate30与mate20的区别(华为mate30与mate20pro)

  • 豆瓣小组怎么取消审核(豆瓣小组怎么取消封禁)

    豆瓣小组怎么取消审核(豆瓣小组怎么取消封禁)

  • 苹果x为什么耗电那么快(苹果x很费电是什么原因)

    苹果x为什么耗电那么快(苹果x很费电是什么原因)

  • 京东白条收款码怎么开(京东白条收款码在哪)

    京东白条收款码怎么开(京东白条收款码在哪)

  • 淘宝付定金立减是什么意思(淘宝付定金立减在哪里看)

    淘宝付定金立减是什么意思(淘宝付定金立减在哪里看)

  • 小米cc9支持快充吗(小米cc9支持快充嘛)

    小米cc9支持快充吗(小米cc9支持快充嘛)

  • vivox27微信声音怎么设置(vivo21微信声音设置)

    vivox27微信声音怎么设置(vivo21微信声音设置)

  • 荣耀为什么和华为分家(荣耀为什么和华为合作)

    荣耀为什么和华为分家(荣耀为什么和华为合作)

  • oppo锁屏时间怎么设置(oppo锁屏时间怎么设置横向)

    oppo锁屏时间怎么设置(oppo锁屏时间怎么设置横向)

  • 手机qq怎么发起临时会话(手机QQ怎么发起群课堂)

    手机qq怎么发起临时会话(手机QQ怎么发起群课堂)

  • 腾讯视频如何上传视频(腾讯视频如何上传PPT)

    腾讯视频如何上传视频(腾讯视频如何上传PPT)

  • macbookpro怎么测网速?mac查看网速教程(macbook pro怎么检测)

    macbookpro怎么测网速?mac查看网速教程(macbook pro怎么检测)

  • 企业清算过程中发生的费用
  • 收到劳务发票还未付款
  • 应税工资怎么计算出来的
  • 企业卖车需要交印花税吗
  • 支付给个人的佣金费用需要发票吗
  • 有没有退股一说
  • 月末进项税额转出科目需要结转吗
  • 出纳可以编制工资单吗
  • 生产企业出售空调设备
  • 二手车销售统一专票图片
  • 发放货物给员工 赠送
  • 资产负债表要素包括几项
  • 怎么计算股票的压力位和支撑位
  • 收到实收资本要验资吗
  • 药品底价高开票什么意思
  • 误工费保险公司全部付吗
  • 固定资产计提折旧的会计科目
  • 根据规定签发汇票凭证必须记载的事项有
  • 申报工伤的流程及时间
  • 转出未交增值税科目
  • 免抵退系统应调整免抵退额吗?
  • 企业土地未全部使用如何缴纳房产税?
  • 旅游服务费如何入账
  • 补缴去年个税
  • 长期待摊费用发生当月摊还是次月摊
  • 没有实缴的股份转让要交个人所得税吗
  • 税盘没反应
  • 公司从一个帐户里扣税吗
  • 无序树有几种
  • 月末增值税计算公式
  • 笔记本通用音频驱动程序怎么修复
  • 资产减值损失结转怎么算
  • 收到保险公司退款
  • 什么是工资薪金所得
  • 账户维护费计入什么会计科目
  • 增值税税控系统技术维护费怎么做账
  • 盘点那些神级翻唱现场
  • 待转销销项税额是什么
  • electron引入vue
  • ps卸载没反应
  • 出口退税过期免税申报流程
  • 预收账款什么时候确认增值税
  • 其他应付款贷方表示什么意思
  • 消防器材费用
  • 同一控制下企业合并和非同一控制下企业合并的区别
  • 净资产是资产负债表中的什么
  • mysql命令行实用程序
  • sqlserver重复数据
  • 融资性售后回租承租方为什么不交税
  • 估价入库的会计分录
  • 银行存款一直没有记账怎么调整
  • 小规模开票额度有限制吗
  • 总账会计工作流程表
  • 国家医疗保障机构
  • 私企公转私出纳有责任吗
  • windows下mysql 5.7版本中修改编码为utf-8的方法步骤
  • win8系统运行慢怎么办
  • ubuntu如何截图快捷键
  • centos root被锁定如何取消
  • fedora update-grub
  • freebsd 升级
  • 去掉快捷功能
  • linux文件与目录
  • virtualbox虚拟机菜单找不到了
  • linux find -a
  • windows为什么会成功
  • win7系统360浏览器书签
  • windows8语言栏不见了
  • win10移动版和win10区别
  • linux shell命令大全
  • sae定义及如何上报
  • perl子函数
  • MaterialCheckBox
  • 用javascript
  • javascript的sort
  • python操作db2数据库
  • jquery数据类型
  • 安卓开源项目叫什么
  • 个税申报系统如何增加新单位
  • 行政单位,比如什么单位
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设