【Vue】----- computed与watch的区别
1.computed
- computed是一种计算属性,用来监听属性的变化;
- computed里面的方法调用的时候不需要加(),并且里面的方法必须要有一个返回值;
- computed里面的方法不是通过事件来去触发的,而是当data中的属性发生了改变的时候会被触发;
- computed最大的特点是当属性没有发生改变的时候,当前方法的值会从缓存中读取。
<div id="app">
<input type="text" v-model.number="a">
<input type="text" v-model.number="b">
<button @click="handleAdd()">计算</button>
<p>结果为:{{sum}}</p> <!-- 执行methods中的handleAdd()方法后返回的结果 -->
<p>computed结果:{{count}}</p> <!-- 执行computed中的count()方法后返回的结果 -->
</div>
new Vue({
el:"#app",
data:{
a:"",
b:"",
sum:""
},
methods:{
handleAdd(){
this.sum = this.a+this.b; //只有点击事件触发时才会改变
}
},
computed:{
count(){
return this.a+this.b; //实时监听,只要data中数据发生改变返回的结果就会改变
}
}
})
2. watch
- watch用来监听每一个属性的变化;
- watch这个对象里面都是函数,函数的名称是data中的属性名称,watch中的函数是不需要调用的;
- 当属性发生改变时就会触发watch中的函数,每一个函数都会接受到2个值,一个值是新值,一个是旧值。可以在watch当中进行新旧值的判断来减少虚拟DOM的渲染;
- 只要属性发生改变就会触发它所对应的函数;
- 如果我们需要对对象进行监听的时候,需要将属性设置为key值,val值为一个对象。对象中有2个参数,一个是handler函数,另一个是deep为true,这样才能实现深度监听。
<div id="app">
<input type="text" v-model.number="a">
<input type="text" v-model.number="b">
<p>结果:{{sum}}</p>
<hr>
<input type="text" v-model="obj.name">
<input type="text" v-model="obj.age">
</div>
new Vue({
el:"#app",
data:{
a:"",
b:"",
sum:"",
obj:{
name:"pinpinkc",
age:18
}
},
watch:{
a(newVal,oldVal){
if(newVal != oldVal){
this.sum = newVal+this.b;
}
console.log("a发生了改变",newVal,oldVal)
},
b(newVal,oldVal){
this.sum = newVal+this.a;
console.log("b发生了改变",newVal,oldVal)
},
obj:{
handler(newVal){
console.log("obj发生了改变",newVal)
},
deep:true
}
}
})
3. computed与watch的区别
- computed在调用的时候不需要加() , watch不需要调用;
- computed如果属性没有发生改变的时候会存缓存中读取值 , watch当属性发生改变的时候会接受到2个值,一个为新值,一个为旧值;
- computed里面的函数必须要有一个return返回结果;
- watch如果需要监听对象的情况下必须设置深度监听;
- computed里面函数的名称可以随意命名,但是watch中函数的名称必须是data中属性的名称。
【Vue】----- computed与watch的区别的更多相关文章
- Vue.js中 computed 和 methods 的区别
官方文档中已经有对其的解释了,在这里把我的理解记录一下Vue中的methods.watch.computed computed 的使用场景 HTML模板中的复杂逻辑表达式,为了防止逻辑过重导致不易维护 ...
- vue计算属性computed和methods的区别
computed和methods的区别 在new Vue的配置参数中的computed和methods都可以处理大量的逻辑代码,但是什么时候用哪个属性,要好好区分一下才能做到正确的运用vue. com ...
- vue系列---理解Vue中的computed,watch,methods的区别及源码实现(六)
_ 阅读目录 一. 理解Vue中的computed用法 二:computed 和 methods的区别? 三:Vue中的watch的用法 四:computed的基本原理及源码实现 回到顶部 一. 理解 ...
- vue中computed/method/watch的区别
摘要:本文通过官方文档结合源码来分析computed/method/watch的区别. Tips:本文分析的源码版本是v2.6.11,文章中牵涉到vue响应式系统原理部分,如果不是很了解,建议先阅读上 ...
- vue computed 原理
vue computed 主要依靠数据依赖来更新,这里不展示computed源代码,只展示核心思想. computed: { a(){ return this.b ++ } } data:{ b: 1 ...
- vue和react之间的区别
1.Vue和React之间的区别 相同点: Vue和其他框架一样,都有组件开发和虚拟dom 都支持props进行父子组件之间的数据通信 都支持数据驱动视图,不直接操作真实dom 都支持服务器端的 渲染 ...
- Vue computed props pass params
Vue computed props pass params vue 计算属性传参数 // 计算 spreaderAlias spreaderAlias () { console.log('this. ...
- vuex bug & vue computed setter
vuex bug & vue computed setter https://vuejs.org/v2/guide/computed.html#Computed-Setter [Vue war ...
- Vue中computed与method的区别
转载于:https://segmentfault.com/a/1190000014478664?utm_source=tag-newest 1.computed区别于method的两个核心 在官方文档 ...
随机推荐
- 51单片机创建PDF文件
PDF文件有特定的格式要求,本以为.TXT与.PDF之间可以相互转换,只需要修改后缀名就可以了,然而事实并非如此. 如下为.PDF文件打开的编码显示. 如果需要创建PDF文件,只需要按照PDF的编码格 ...
- C++入门笔记(一)零碎基础知识
零碎基础知识 一.创建和运行程序 1.使用文本编辑器编写程序,保存为文件,该文件就叫源代码. 2.编译源代码:运行一个程序,将源代码翻译为主机使用的内部语言----机器语言.包含了 编译后程序的文件就 ...
- S2.1 修复图像小程序(简单版)
用OpenCV自带的inpaint()演示 CV_EXPORTS_W void inpaint( InputArray src, InputArray inpaintMask, OutputArray ...
- 关于Promise层层嵌套可读性差问题
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象 ES6 规 ...
- window下如何使用文本编辑器(如记事本)创建、编译和执行Java程序
window下如何使用文本编辑器(如记事本)创建Java源代码文件,并编译执行 第一步:在一个英文目录下创建一个 .text 文件 第二步:编写代码 第三步:保存文件 方法一:选择 文件>另存为 ...
- mysql node
mysql8.0版本 报错:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol req ...
- 《SpringMVC从入门到放肆》十二、SpringMVC自定义类型转换器
之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView.返回List.Map等等,这里就包含了传 ...
- js 事件模型详解
把js的事件模型,分为两类,DOM0级和DOM2级, DOM0级 通常直接在DOM对象上绑定函数对象,指定事件类型,dom.onClick = function(){};类似于这种写法,移除事件,则直 ...
- swust oj 1012
哈希表(链地址法处理冲突) 1000(ms) 10000(kb) 2542 / 6517 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法 ...
- 最新鲜最详细的Android SDK下载安装及配置教程
//来源: http://www.cnblogs.com/summary-2017/p/8073225.html 最近Neo突发神经,想要将学过的一些计算机视觉.机器学习中的算法都放到移动设备上去跑跑 ...