Vue中watch使用方法总结

这次给大家带来Vue中watch使用方法总结,Vue中watch使用的注意事项有哪些,下面就是实战案例,一起来看一下。

假设有如下代码:

fullname: {{fullname}}

FirstName:

new Vue({ el: '#root', data: { firstName: 'Dawei', lastName: 'Lou', fullName: '' }, watch: { firstName(newName, oldName) { this.fullName = newName + ' ' + this.lastName; } } })

登录后复制

上面的代码的效果是,当我们输入firstName后,wacth监听每次修改变化的新值,然后计算输出fullName。

handler方法和immediate属性

这里 watch 的一个特点是,最初绑定的时候是不会执行的,要等到 firstName 改变时才执行监听计算。那我们想要一开始就让他最初绑定的时候就执行改怎么办呢?我们需要修改一下我们的 watch 写法,修改过后的 watch 代码如下:

watch: { firstName: {  handler(newName, oldName) {   this.fullName = newName + ' ' + this.lastName;  },  // 代表在wacth里声明了firstName这个方法之后立即先去执行handler方法  immediate: true }}

登录后复制

注意到handler了吗,我们给 firstName 绑定了一个handler方法,之前我们写的 watch 方法其实默认写的就是这个handler,Vue.js会去处理这个逻辑,最终编译出来其实就是这个handler。

而immediate:true代表如果在 wacth 里声明了 firstName 之后,就会立即先去执行里面的handler方法,如果为 false就跟我们以前的效果一样,不会在绑定的时候就执行。

deep属性

watch 里面还有一个属性 deep,默认值是 false,代表是否深度监听,比如我们 data 里有一个obj属性:

obj.a: {{obj.a}}

obj.a:

new Vue({ el: '#root', data: { obj: { a: 123 } }, watch: { obj: { handler(newName, oldName) { console.log('obj.a changed'); }, immediate: true } } })

登录后复制

当我们在在输入框中输入数据视图改变obj.a的值时,我们发现是无效的。受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。

默认情况下 handler 只监听obj这个属性它的引用的变化,我们只有给obj赋值的时候它才会监听到,比如我们在 mounted事件钩子函数中对obj进行重新赋值:

mounted: { this.obj = {  a: '456' }}

登录后复制

这样我们的 handler 才会执行,打印obj.a changed。

相反,如果我们需要监听obj里的属性a的值呢?这时候deep属性就派上用场了!

watch: { obj: {  handler(newName, oldName) {   console.log('obj.a changed');  },  immediate: true,  deep: true }}

登录后复制

deep的意思就是深入观察,监听器会一层层的往下遍历,给对象的所有属性都加上这个监听器,但是这样性能开销就会非常大了,任何修改obj里面任何一个属性都会触发这个监听器里的 handler。

优化,我们可以是使用字符串形式监听。

watch: { 'obj.a': {  handler(newName, oldName) {   console.log('obj.a changed');  },  immediate: true,  // deep: true }}

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

立即学习“前端免费学习笔记(深入)”;

推荐阅读:

nodejs日志模块winston使用方法总结

vue+vue-router+vuex操作权限

以上就是Vue中watch使用方法总结的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2761888.html

(0)
上一篇 2025年3月8日 09:40:27
下一篇 2025年2月25日 19:41:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Angular5路由传值方法总结

    这次给大家带来Angular5路由传值方法总结,Angular5路由传值的注意事项有哪些,下面就是实战案例,一起来看一下。 目前Angular已经升级到了稳定版本Angular5,这次升级更小更快以及更稳定!路由可以说是Angular甚至是…

    编程技术 2025年3月8日
    200
  • Vue使用技巧总结

    这次给大家带来Vue使用技巧总结,Vue使用技巧总结的注意事项有哪些,下面就是实战案例,一起来看一下。 在vue的使用过程中会遇到各种场景,当普通使用时觉得没什么,但是或许优化一下可以更高效更优美的进行开发。下面有一些我在日常开发的时候用到…

    编程技术 2025年3月8日
    200
  • ES6使用技巧总结

    这次给大家带来ES6使用技巧总结,ES6使用的注意事项有哪些,下面就是实战案例,一起来看一下。 如果你还知道其他一些小技巧,欢迎留言。我很高兴把它们补充进来。 1. 强制要求参数 ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函…

    编程技术 2025年3月8日
    200
  • 详细为你解析AJAX的使用方法(代码贴上)

    下面是我给大家整理的AJAX的使用方法,有兴趣的同学可以去看看。 HTTPS “/jsontest/randomdata/” // there was a missing trailing /// i.e.   // was going t…

    编程技术 2025年3月8日
    200
  • 有关js string()常用方法总结(图文教程)

    下面是我给大家整理的js string()常用方法总结,有兴趣的同学可以去看看。 创建一个String 对象,语法:new String(stringValue),这个调用会将参数转换为字符串,并作为一个String 对象。事实上任何一个字…

    编程技术 2025年3月8日
    200
  • JavaScript创建对象的七种方式(总结,必读)

    这篇文章主要介绍了javascript创建对象的七种方式,工厂模式,构造函数模式,原型模式等分别在本文中做出了讲解,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。  JavaScript创建对象的方式有很多,通过Obj…

    编程技术 2025年3月8日
    200
  • 在js oncontextmenu事件中使用方法的详细讲解

    这篇文章主要介绍了js oncontextmenu事件使用详解,需要的朋友可以参考下 定义和使用 oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。注意:所有浏览器都支持 oncontextmenu 事件, con…

    编程技术 2025年3月8日
    200
  • 详解解读JavaScript中|单竖杠运算符的使用方法(图文教程)

    javascript中|单竖杠通常被用来对浮点型数字进行取证,这里同时也介绍了单竖杠的运算规则,下面我们就来详解javascript中|单竖杠的使用方法 js运算符单竖杠“|”的作用 在js整数操作的时候,相当于去除小数点,parseInt…

    编程技术 2025年3月8日
    200
  • AngularJS中$http服务使用方法详解

    这次给大家带来AngularJS中$http服务使用方法详解,AngularJS中$http服务的注意事项有哪些,下面就是实战案例,一起来看一下。 我们可以使用内置的$http服务直接同外部进行通信。$http服务只是简单的封装了浏览器原生…

    编程技术 2025年3月8日
    200
  • js常见dom节点操作使用方法总结

    这次给大家带来js常见dom节点操作使用方法总结,js常见dom节点操作方法总结的注意事项有哪些,下面就是实战案例,一起来看一下。 DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论