vue中watch的详细用法,带deep,immediate
wetch简介
最初绑定的时候是不会执行的,要等到 监听的属性 改变时才执行监听计算。那我们想要一开始就让他最初绑定的时候就执行改怎么办呢?
<div><p>obj.a: {{obj.a}}</p><p>obj.a: <input type="text" v-model="obj.a"></p>
</div>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'}
}
相反,如果我们需要监听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}
}
这样Vue.js才会一层一层解析下去,直到遇到属性a,然后才给a设置监听函数。
vue中watch的详细用法,带deep,immediate相关推荐
- 详解Vue中watch的高级用法
转载自 详解Vue中watch的高级用法 我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: 1 2 3 4 5 6 7 8 9 10 ...
- vue中computed的详细讲解
vue中computed的详细讲解 1.定义 2.用法 3.computed的响应式依赖(缓存) 4.应用场景 1.定义 computed是vue的计算属性,是根据依赖关系进行缓存的计算,只有在它的相 ...
- 「后端小伙伴来学前端了」Vue中 this.$set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图
夜晚有明月,梦里有佳人 前言 最近在写老师布置的vue项目,真的说实话,每天真就是在百度.google.bing等各个搜索引擎之间反复横跳,不然就是掘金搜一搜.思否搜一搜,还有CSDN看一看.我的前端 ...
- C++中 cin 的详细用法
1.cin 简介 cin是C++编程语言中的标准输入流对象,即istream类的对象.cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘.此外,cout是流的对象,即ostream类的 ...
- vue中的keep-alive的用法详细讲解
问题描述(什么是keep-alive) keep-alive顾名思义,保持活跃.保持谁活跃呢? 首先我们知道,因为vue就是组件化编程,一个.vue文件就是一个组件.就像万事万物一样,都有从出生到消亡 ...
- Vue中JSX的基本用法
基本用法 首先需要约定一下,使用JSX组件命名采用首字母大写的驼峰命名方式,样式可以少的可以直接基于vue-styled-components写在同一个文件中,复杂的建议放在单独的_Styles.js ...
- vue中引入路径的用法
一.Vue文件中引用路径的介绍 1.路径 ./ ./当前文件同级目录 2.路径 -/ -/当前文件上一级目录 3.@符号 @ 的作用是在你引入模块时,可以使用 @ 代替 /src 目录,避免易错的相对 ...
- Vue中v-on的基础用法、参数传递和修饰符
目录 一.v-on的基本用法 使用v-on:click给button绑定监听事件以及回调函数,@是v-on:的缩写,也就是简写也可以使用@click.方法一般是需要写方法名加上(),在@click中可 ...
- 监听对象中某一项的值_Vue中watch的详细用法
1.基本用法 下面代码是watch的一种基本用法: watch去监听单个值是否发生改变 直接写一个监听处理函数,当每次监听到cityName值发生改变时,执行函数.也可以在所监听的数据后面直接加字符串 ...
- vue 中provide的用法_[转]浅谈vue中provide和inject 用法
provide:Object | () => Object inject:Array | { [key: string]: string | Symbol | Object } provide ...
最新文章
- every day english
- 第十二周项目一-实现复数类中的运算符重载(3)
- oracle层次查询中prior与自上而下、自下而上查询
- go语言api源码中文版_Go语言学习——sync.map源码剖析
- [js] axios拦截器原理是什么?
- 华为机试题2[编程题] 汽水瓶
- ELK5.3日志分析平台部署
- 华为的手册和官网视频,学习网络基础
- 解决报错(4种情况):0x00007FF614F73B96 处(位于 XXX.exe 中)引发的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000XXX
- nowcoder-linux
- VS实现格式化代码及代码缩进
- windows server 2008安装配置web服务器
- 关于裁员几点看法及建议
- 搭建 WordPress 博客教程(超详细)
- 计算机卸载打不开,电脑卸载wps后excel打不开怎么办
- android 离线地图 开源,android osmdroid 加载常用离线地图格式(开源的在线地图)...
- 直播网站html代码,怎么生成嵌入网页直播的HTML代码
- 时间序列平稳性检验(ADF)和白噪声检验(Ljung-Box)
- 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/ch
- ios客户端学习-itunes app 下载地址
热门文章
- 我国将大力发展装配式建筑 2025年装配式建筑占新建建筑比例将超30%
- thinkphp5.1+workman+jsonRpc
- date函数详细用法
- 从桌面运维转到网工后,我是怎样成为大厂高级网工的
- 以下是两段c语言代码 函数arith(),第二章习题-ddg.doc
- java计算器自述文件_自述文件 - Unreal Engine
- k8s集群Canal的网络控制
- 10.27Unity事件、场景烘焙、Render Texture
- 《Learning for Disparity Estimation through Feature Constancy》
- 从入门到放弃,50G编程视频免费送!