computed 计算属性

能够监听vue数据上的变化,页面上来就执行一次,每改变一次数据就又触发。在操作数据的时候,会派生出另一个事情

1、函数形式
computed:{
listenArr(){
/*
使用data中数据,自动帮你监听数据的变化
返回的结果就是通过改变数据 做的另一件事情(当数据变化时候需要做的事情)
*/
}
}
2、对象形式
computed:{
listenArr:{
get(){
//获取时候
},
set(newVal){
//修改时候
}
}
}

get是获取的时候执行的操作。set是修改时候执行的操作

应用场景:

比如在用户输入框改变数据的时候过滤数字;

通过数据的变化,来进行累计;

通过单选按钮的变化,来进行判断是否全选等等

优点:指定看哪个数据,就只看哪个数据

PS:需要注意的是  函数名,不要和data中的数据一样。

<div id="app">
全选
<input type="checkbox" v-model="all">
<hr>
<input type="checkbox" v-for="(val,key) in arr" v-model="val.checked">{{arr}}
</div>
 new Vue({
el:'#app',
data:{
arr:[
{checked:true},
{checked:false},
{checked:false},
{checked:true}
]
},
//当使用get和set时候,computed中定义的属性为一个对象
//当不使用get和set时候,computed中定义的属性可以是一个函数
computed:{
/*
all(){
return this.arr.every(e=>e.checked);
}
*/
all:{
get(){
//获取的时候执行的操作
return this.arr.every(e=>e.checked);
},
set(newVal){
//修改时候执行的操作。其中newVal 是改变之后的结果
return this.arr.forEach(e=>e.checked = newVal)
}
}
} });

watch 指定数据监听器

当指定数据发生变化时候触发。一开始不会触发,只有指定的数据发生变化就又触发一次
 
第一种写法:
watch:{
  要监听的数据名(新的数据,旧的数据){
  //只能监听一层,两层或者深层监听不到,需要deep为true(深度监听)
  }
}
 
第二种写法
watch:{
  要监听的数据名(新的数据,旧的数据){
  handler(){
     //执行的操作
  },
  deep:true
  }
}

应用场景:

监听路由参数的变化

种localStorage的时候,深度添加等等

 <div id="app">
<input type="text" v-model="val">
<ul>
<li v-for="(val,key) in arr">
<input type="checkbox" v-model="val.checked">
</li>
</ul>
{{arr}}
</div>
new Vue({
el:'#app',
data:{
val:'hao123',
arr:[
{checked:true},
{checked:false},
{checked:false},
{checked:false}
] },
watch:{
arr:{
handler(v){
localStorage.setItem('data',JSON.stringify(v))
},
deep:true
}
} });
function getStorage(name){
//存储到本地
let data = localStorage.getItem(name) || '[{"checked":false},{"checked":false},{"checked":false}]';
return JSON.parse(data); //[] -> [{}]
}

总结:computed和watch都起到监听一个数据,并进行处理的作用

computed主要用于对同步数据的简单处理,watch则主要用于数据输入时异步操作或者开销较大的情况

computed在监听数据变化时候,上来就会执行一次。而watch页面上来是不会执行的,只有指定数据发生变化才会触发

computed具有缓存性,值不变化会读取缓存,watch无缓存性,值不变化也会执行

vue中computed和watch的更多相关文章

  1. vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分

    vue中computed和watch的对比是一个很有意思的话题. 看过官网教程以后,我们往往更倾向多使用computed.computed优点很多,却在某些时候不太适用. 今天我们就稍微讨论一下,当我 ...

  2. Vue中computed和watch的区别

    在vue中computed和watch的真正区别是:computed产生于它的依赖,而watch产生于它的依赖的变化.只要依赖存在,我们就能访问到其对应的computed属性:但只有依赖发生了改变,我 ...

  3. Vue中computed分析

    Vue中computed分析 在Vue中computed是计算属性,其会根据所依赖的数据动态显示新的计算结果,虽然使用{{}}模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板中放入太 ...

  4. vue中computed的作用以及用法

    在vue中computed是计算属性,主要作用是把数据存储到内存中,减少不必要的请求,还可以利用computed给子组件的data赋值. 参考地址:https://www.jianshu.com/p/ ...

  5. Vue中computed,methods 和watch

    Vue中的计算属性和方法属性 1.计算属性 computed 模版中可以使用表达式 <div id="example"> {{ message.split('').re ...

  6. vue中computed与watch的异同

    一.computed 和 watch   都可以观察页面的数据变化.当处理页面的数据变化时,我们有时候很容易滥用watch. 而通常更好的办法是使用computed属性,而不是命令是的watch回调. ...

  7. vue中computed计算属性与methods对象中的this指针

    this 指针问题 methods与computed中的this指针 应该指向的是它们自己,可是为什么this指针却可以访问data对象中的成员呢? 因为new Vue对象实例化后data中的成员和c ...

  8. vue中computed和watch的用法

    computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理: computed比较适合对多个变量或 ...

  9. vue中computed和watch的写法,以及区别

    <template> <div class="print"> <div style="color: red"> <p ...

随机推荐

  1. MT【299】对数型数列不等式

    已知数列$\{\dfrac{1}{n}\}$的前$n$项和为$S_n$,则下面选项正确的是(      )A.$S_{2018}-1>\ln 2018$B.$S_{2018}-1<\ln ...

  2. 【Luogu3732】[HAOI2017]供给侧改革(Trie树)

    [Luogu3732][HAOI2017]供给侧改革(Trie树) 题面 洛谷 给定一个纯随机的\(01\)串,每次询问\([L,R]\)之间所有后缀两两之间的\(LCP\)的最大值. 题解 一个暴力 ...

  3. 【CF833D】Red-Black Cobweb(点分治)

    [CF833D]Red-Black Cobweb(点分治) 题面 CF 有一棵树,每条边有一个颜色(黑白)和一个权值,定义一条路径是好的,当且仅当这条路径上所有边的黑白颜色个数a,b满足2min(a, ...

  4. 【BZOJ3691】游行(网络流)

    [BZOJ3691]游行(网络流) 题面 BZOJ 然而权限题. Description 每年春季,在某岛屿上都会举行游行活动. 在这个岛屿上有N个城市,M条连接着城市的有向道路. 你要安排英雄们的巡 ...

  5. RabbitMQ图解

    一.MQ对比 二.RabbitMQ模式 三.队列模式 四.公平分发 五.主题模式

  6. HR_Minimum Swaps 2

    源代码超时 看了评论区改用了字典序列. #!/bin/python3 import math import os import random import re import sys # Comple ...

  7. bzoj1831 逆序对 (dp+树状数组)

    注意到,所有的-1应该是一个不降的序列,否则不会更优那就先求出来不是-1的的逆序对个数,然后设f[i][j]表示第i个-1放成j的前i个-1带来的最小逆序对数量这个可以树状数组来求 #include& ...

  8. 如何刻录cd音乐

    用nero,选择cd,音乐光盘(第一个)可以添加入wav,MP3等.刻录即可.

  9. tyvj/joyoi 2018 小猫爬山

    2018,这个题号吼哇! 搜索第一题,巨水. WA了一次,因为忘了还原... #include <cstdio> ; int n, W, ans, weigh[N], cost[N]; i ...

  10. Flask filter过滤器

    简单的数据集体添加样式输出用管道过滤,除了flask模块以外不需要导其他的包 <head> <meta charset="UTF-8"> <meta ...