vue中computed和watch
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 指定数据监听器
应用场景:
监听路由参数的变化
种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的更多相关文章
- vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分
vue中computed和watch的对比是一个很有意思的话题. 看过官网教程以后,我们往往更倾向多使用computed.computed优点很多,却在某些时候不太适用. 今天我们就稍微讨论一下,当我 ...
- Vue中computed和watch的区别
在vue中computed和watch的真正区别是:computed产生于它的依赖,而watch产生于它的依赖的变化.只要依赖存在,我们就能访问到其对应的computed属性:但只有依赖发生了改变,我 ...
- Vue中computed分析
Vue中computed分析 在Vue中computed是计算属性,其会根据所依赖的数据动态显示新的计算结果,虽然使用{{}}模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板中放入太 ...
- vue中computed的作用以及用法
在vue中computed是计算属性,主要作用是把数据存储到内存中,减少不必要的请求,还可以利用computed给子组件的data赋值. 参考地址:https://www.jianshu.com/p/ ...
- Vue中computed,methods 和watch
Vue中的计算属性和方法属性 1.计算属性 computed 模版中可以使用表达式 <div id="example"> {{ message.split('').re ...
- vue中computed与watch的异同
一.computed 和 watch 都可以观察页面的数据变化.当处理页面的数据变化时,我们有时候很容易滥用watch. 而通常更好的办法是使用computed属性,而不是命令是的watch回调. ...
- vue中computed计算属性与methods对象中的this指针
this 指针问题 methods与computed中的this指针 应该指向的是它们自己,可是为什么this指针却可以访问data对象中的成员呢? 因为new Vue对象实例化后data中的成员和c ...
- vue中computed和watch的用法
computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理: computed比较适合对多个变量或 ...
- vue中computed和watch的写法,以及区别
<template> <div class="print"> <div style="color: red"> <p ...
随机推荐
- nfs的配置文件/etc/exports
/etc/exports 文件格式 <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)] a. 输出目录:输出目录是指NFS系统中 ...
- Android多种方法显示当前日期和时间
文章选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文探讨Android显示当前日期和时间的方法. ...
- Android 开发中 SQLite 数据库的使用
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...
- ubuntu “无法获得锁 /var/lib/dpkg/lock -open”
在ubuntu系统终端下,用apt-get install 安装软件的时候,如果在未完成下载的情况下将终端中断,此时 apt-get进程可能没有结束.结果,如果再次运行apt-get install ...
- 通过pycharm将代码push到远程仓库
现在使用pycharm作为python编辑器的人还是不少,而且,也可以通过pycharm将代码push到远程仓库. 步骤见下面截图: 填上远程仓库地址及克隆到本地的目录 输入远程仓库的账号和密码 修改 ...
- 【git】git一些命令使用记录
目前git版本控制很多公司都在用,我把平时的使用做些记录,防止忘记. 1. 有时候分支比较多,我们会基于master建立一个新分支开发,有时候也会基于别的分支建立,但时间长了可能会忘记当前分支是基于哪 ...
- centos7/RHEL7最小化系统安装gnome图形界面
应用场景:对于比较熟悉linux系统的用户来说,全命令行系统可能来的比较简单明了高效,也存在某些情况下需要有像winodws下弹出对话框的情形需求,或者对于初识linux习惯windows界面的用户来 ...
- mybatis 二级缓存
Mybatis读取缓存次序: 先从二级缓存中获取数据,如果有直接获取,如果没有进行下一步: 从一级缓存中取数据,有直接获取,如果没有进行下一步: 到数据库中进行查询,并保存到一级缓存中: 当sqlSe ...
- JS小积累(二)— 自动获取浏览器尺寸
JS小积累-获取浏览器窗口尺寸 作者: 狐狸家的鱼 GitHub:八至 autodivheight(); function autodivheight() { //函数:获取尺寸 //获取浏览器窗口高 ...
- 【LOJ#6277】数列分块1
题目大意:维护一个长度为 N 的序列,支持区间修改.单点查询. 代码如下 #include <bits/stdc++.h> using namespace std; const int m ...