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的区别的更多相关文章

  1. Vue.js中 computed 和 methods 的区别

    官方文档中已经有对其的解释了,在这里把我的理解记录一下Vue中的methods.watch.computed computed 的使用场景 HTML模板中的复杂逻辑表达式,为了防止逻辑过重导致不易维护 ...

  2. vue计算属性computed和methods的区别

    computed和methods的区别 在new Vue的配置参数中的computed和methods都可以处理大量的逻辑代码,但是什么时候用哪个属性,要好好区分一下才能做到正确的运用vue. com ...

  3. vue系列---理解Vue中的computed,watch,methods的区别及源码实现(六)

    _ 阅读目录 一. 理解Vue中的computed用法 二:computed 和 methods的区别? 三:Vue中的watch的用法 四:computed的基本原理及源码实现 回到顶部 一. 理解 ...

  4. vue中computed/method/watch的区别

    摘要:本文通过官方文档结合源码来分析computed/method/watch的区别. Tips:本文分析的源码版本是v2.6.11,文章中牵涉到vue响应式系统原理部分,如果不是很了解,建议先阅读上 ...

  5. vue computed 原理

    vue computed 主要依靠数据依赖来更新,这里不展示computed源代码,只展示核心思想. computed: { a(){ return this.b ++ } } data:{ b: 1 ...

  6. vue和react之间的区别

    1.Vue和React之间的区别 相同点: Vue和其他框架一样,都有组件开发和虚拟dom 都支持props进行父子组件之间的数据通信 都支持数据驱动视图,不直接操作真实dom 都支持服务器端的 渲染 ...

  7. Vue computed props pass params

    Vue computed props pass params vue 计算属性传参数 // 计算 spreaderAlias spreaderAlias () { console.log('this. ...

  8. vuex bug & vue computed setter

    vuex bug & vue computed setter https://vuejs.org/v2/guide/computed.html#Computed-Setter [Vue war ...

  9. Vue中computed与method的区别

    转载于:https://segmentfault.com/a/1190000014478664?utm_source=tag-newest 1.computed区别于method的两个核心 在官方文档 ...

随机推荐

  1. websocket与ajax的区别浅析

    1.本质不同  Ajax,即异步JavaScript和XML,是一种创建交互式网页应用的网页开发技术:  WebSocket是HTML5一种新的协议,实现了浏览器与服务器全双工通信.其本质是先通过HT ...

  2. ubuntu的安装及ubuntu中安装mysql和tomcat

    一.安装ubuntu 1.创建虚拟机 2.向导选择自定义 3.然后下一步再下一步,直到这里,稍后再安装系统 4.然后选择linux,注意这里下面的下拉选择Ubuntu64,因为我们下载的是64位的,如 ...

  3. Java学习之软件安装

    成功安装了jdk-10.0.1.eclipse-committers-2018-09-win32-x86_64.mysql-5.7.18.1和tomcat-9.0.0.M17

  4. linux-centos基本使用(一)

    1. 基本配置 1.常用软件安装 yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2uni ...

  5. 8.3-8.4NOIP模拟题总结

    一:成绩 Day1 score=100+100+20 Day2 score=100+30+0 这成绩还是不行啊,仍需继续加油(抱怨一句暴力分有点少#滑稽) 二:题目分析 Day1 T1祖孙询问: 已知 ...

  6. 11-Cookie&Session

    中文文件下载 针对浏览器类型,对文件名字做编码处理 Firefox (Base64) , IE.Chrome ... 使用的是URLEncoder /* * 如果文件的名字带有中文,那么需要对这个文件 ...

  7. Flex布局—语法篇

    网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...

  8. JUnit介绍(转)

    测试的重要性毋庸再说,但如何使测试更加准确和全面,并且独立于项目之外并且避免硬编码,JUnit给了我们一个很好的解决方案.一.引子    首先假设有一个项目类SimpleObject如下:    pu ...

  9. session源码剖析

    session机制采用的是一种在客户端与服务端之间保持状态的解决方案,由于采用服务器端保持状态的方案在客户端也要保存标识,session机制也要借助于cookie机制达到目的.session保存了客户 ...

  10. 把一下程序中的print()函数改写成

    源代码: #include <iostream> using namespace std; void print( int w ) { ; i <= w ; i++ ) { ; j ...