一、 计算属性(computed)

1.计算属性是为了模板中的表达式简洁,易维护,符合用于简单运算的设计初衷。对于运算过于复杂,冗长,且不好维护,因此我们对于复杂的运算应该 使用计算属性的方式去书写。

下面来看代码体验一下吧

<div id="app">
<h1>
{{ myname.substring(0,1).toUpperCase() + myname.substring(1) }}
</h1>
</div>
<script>
const app = new Vue({
el: '#app',
data: {
myname: 'xiaowu3'
}, })
</script>

由上可以看出在html标签中的代码过多,不方便于我们进行对代码的管理,因此我们可以利用计算属性computed对其进行简化

<div id="app">
<h1>
{{ changewords}}
</h1>
</div>
<script>
const app = new Vue({
el: '#app',
data: {
myname: 'xiaowu3'
},
computed: {
changewords() {
return this.myname.substring(0, 1).toUpperCase() + this.myname.substring(1)
}
} })
</script>

总结:

1.变量不在 data中定义,而是定义在computed中,写法跟写方法一样,有返回值。函数名直接在页面模板中渲染,不加小括号 。

2.根据传入的变量的变化 进行结果的更新。

3.计算属性基于响应式依赖进行缓存。如其中的任意一个值未发生变化,它调用的就是上一次 计算缓存的数据,因此提高了程序的性能。而methods中每调用一次就会重新计算 一次,为了进行不必要的资源消耗,选择用计算属性。

二、监听属性(watch)

上面说到计算属性的时候 初始化的时候就可以被监听到并且计算 但是watch是发生改变的时候才会触发。

当你有一些数据需要随着其它数据变动而变动时,或者当需要在数据变化时执行异步或开销较大的操作时,你可以使用 watch。

看下面代码体验一下吧

body>
<div id="app">
<p>单价:<input type="text" v-model="price"></p>
<p>数量:<input type="text" v-model="number"></p>
<p>计算金额:{{sum}}</p>
</div>
</body>
<script>
const app = new Vue({
el: "#app",
data: {
price: 100,
number: 1,
sum: 100
},
//监听某一个值或者状态发生变化 变化就会触发watch
watch: {
// 监听的参数的名字要一致
price() {
console.log(this.price)
if (this.price * this.number < 1000 && this.price * this.number > 0) {
this.sum = this.price * this.number + 100
} else {
this.sum = this.price * this.number
}
},
number() {
console.log(this.price)
if (this.price * this.number < 1000 && this.price * this.number > 0) {
this.sum = this.price * this.number
} else {
this.sum = this.price * this.number
}
}
}
})
</script>

三.它们的使用场景

computed :   
    当一个属性受多个属性影响的时候就需要用到computed
    最典型的例子: 如购物车商品结算的时候
watch:
    当一条数据影响多条数据的时候就需要用watch
    如搜索数据
 

Vue中watch与computed的区别的更多相关文章

  1. Vue中method与computed的区别

    为了说明method与computed的区别,在此我想先来看看computed属性在vue官网中的说法:模板内的表达式是非常便利的,但是它们实际上只用于简单的运算.在模板中放入太多的逻辑会让模板过重且 ...

  2. vue中methods、computed、watch区别

    vue中methods.computed.watch区别methods:事件调用的钩子 computed:{ // 计算属性是根据他依赖的值计算的,当依赖值发生变化,其跟着改变 // 计算属性是依赖缓 ...

  3. vue中assets和static的区别

    Vue中assets和static的区别 再一次框架定型中,与同事在静态资源的存放上有了一些分歧,后来经过查阅总结如下: 相同点:   assets和static两个都是存放静态资源文件.项目中所需要 ...

  4. 浅谈Vue中计算属性computed的实现原理

    虽然目前的技术栈已由Vue转到了React,但从之前使用Vue开发的多个项目实际经历来看还是非常愉悦的,Vue文档清晰规范,api设计简洁高效,对前端开发人员友好,上手快,甚至个人认为在很多场景使用V ...

  5. vue 中 assets 和 static 的区别

    Vue中的静态资源管理(src下的assets和static文件夹的区别)

  6. vue中计算属性computed方法内传参

    vue中computed计算属性无法直接进行传参 如果有传参数的需求比如说做数据筛选功能可以使用闭包函数(也叫匿名函数)实现 例如: 在上篇博客vue安装使用最后的成绩表练习中的过滤功能的实现: &l ...

  7. vue中$route 和$router的区别

    在vue中会出现一种情况 const url=this.$route.query.returnURL; this.$router.push(url);    $router和$route的区别傻傻的分 ...

  8. 简述vue中v-if和v-show的区别

    vue中的 v-if 和 v-show 二者都可以动态的控制元素的隐藏和显示,但是他们控制的原理是不同的 v-if v-if 控制元素显示或隐藏是把dom元素整个的渲染或者删除,如果删除,也就是页面中 ...

  9. Vue中使用watch computed

    watch:监听属性,来监听dta中的数据变化  或者route的变化 computed:计算属性, <!DOCTYPE html> <html lang="en" ...

随机推荐

  1. 【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心

    问题描述 在Application Gateway中,开启WAF(Web application firewall)后,现在需要把访问的日志输出到第三方分析代码中进行分析,如何来获取WAF的诊断日志呢 ...

  2. 友盟umeng消息推送直接复制就能用(纯干货)

    一. 单播推送(unicast) 1.1 图 1.2 代码 1 /** 2 * 根据设备的deviceToken, 去给指定的设备推送消息 3 * 4 * @param deviceToken 单个d ...

  3. nvGRAPH API参考分析(一)

    nvGRAPH API参考分析(一) 本文通过描述nvGRAPH库函数的输入/输出参数,数据类型和错误代码来指定其行为. 1.    返回值nvgraphStatus_t 除以下内容外,所有nvGRA ...

  4. oracle表ddl审计

    ============= 表ddl 审计============== 1.table信息 SQL> select * from test; ID CUST_CREDIT_LIMIT TIME ...

  5. 菜鸟刷题路:剑指 Offer 03. 数组中重复的数字

    剑指 Offer 03. 数组中重复的数字 哈希表/set class Solution { public int findRepeatNumber(int[] nums) { HashSet< ...

  6. WEB 页面认证

    1:安装htpasswd工具生成加密文件 安装工具 # yum install httpd-tools # htpasswd -cm /etc/httpd/passwd/password useraN ...

  7. 实验1、初入Flask

    实验介绍 1. 实验内容 Flask是一个用Python编写的Web应用程序框架.Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask.Flask基于Werk ...

  8. NX二次开发-克隆操作

    模板文件: 克隆替换字符串: 1 #include "Text.h" 2 extern DllExport void ufsta(char *param, int *returnC ...

  9. 【NX二次开发】布尔操作

    //布尔操作 //UF_MODL_operations 对两个体执行布尔操作 //UF_MODL_unite_bodies 相加布尔操作,不可保留目标体.工具体 //UF_MODL_unite_bod ...

  10. Pandas高级教程之:处理缺失数据

    目录 简介 NaN的例子 整数类型的缺失值 Datetimes 类型的缺失值 None 和 np.nan 的转换 缺失值的计算 使用fillna填充NaN数据 使用dropna删除包含NA的数据 插值 ...