关于vue的computed、filters、watch
filters
这个属性大家可能用的不是很多
因为一般的数组过滤我们用 es6的filter就能完成了
我想到一个场景,网上买书促销
满100减50
满两百减100
<input type="text" v-model="price"/>
<p>满100减50</p>
<p>满200减100</p>
<p>折后价格:{{price | priceFilter}}</p> data:{
price:100
},
filters:{
priceFilter(price){
let disCount = 0
if(price>=100 && price <200){
disCount = 50
}else if(price > 200){
disCount = 100
}else{ }
price = price - disCount
return price
}
}
这种场景用filters就比较适合了
computed
computed适合比较单纯的数据改动,拼接等操作并且保存在一个新的变量里
比如拼接姓和名
<p>{{lastName}}{{firstName}}</p>
<p>computed:{{username}}</p>
<input type="text" v-model="firstName"/>
<input type="text" v-model="str"/>
data:{
firstName:'小明',
lastName:'王',
str:'213'
},
computed:{
username:function(){
console.log(123)
return this.lastName + this.firstName
}
}
特别注意的是,computed会缓存
在我们要监听的数据没有变化的时候,是不会再去执行对象相应的数据的
比如修改str,不会输出123
但是如果是filters的话,会重新执行里面的操作,不会缓存
所以,computed性能比较好
watch
watch监听一我一般用来处理页面的联动效果
一般是发请求或者监听路由进行相应操作
watch想说的是 immediate 和 deep两个属性
immediate在数据第一次改变前就会调用
适合初始化数据
<select name="codeName" v-model="selectedOption" id="">
<option :value="item" v-for="item in selectArr">{{item}}</option>
</select> const vm = new Vue({
el:"#app",
data:{
selectArr:['js','java'],
selectedOption:'js',
showText:''
}, watch:{
selectedOption:{
handler:function(val, oldVal){
this.showText = this.selectedOption
},
immediate:true
}
}
}
deep是深度监听,能监听对象新增属性值
<input type="text" v-model="deepA.obj.y">
<input type="text" v-model="deepB.obj.y"> const vm = new Vue({
el:"#app",
data:{
deepA:{x:1,obj:{y:1}},
deepB:{x:2,obj:{y:2}}
} watch:{
deepA:{
handler:function(val, oldVal){
console.log('deepA has change')
},
deep:false
},
deepB:{
handler:function(val, oldVal){
console.log('deepB has change')
},
deep:true
}
}
当我们改变 deepA的时候,watch不会触发
deepB因为有了 deep:true所以触发了
另外:input改变deepA和deepB的时候都会触发 filters里面方法(不会缓存)
关于vue的computed、filters、watch的更多相关文章
- vue的computed属性
vue的computed属性要注意的两个地方,1,必须有return,2,使用属性不用括号 <div> <input type="text" v-model=&q ...
- Vue的Computed的使用
Vue的Computed的使用 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 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 属性在什么时间执行
- vue中computed的作用以及用法
在vue中computed是计算属性,主要作用是把数据存储到内存中,减少不必要的请求,还可以利用computed给子组件的data赋值. 参考地址:https://www.jianshu.com/p/ ...
- Vue学习之--------Vue中过滤器(filters)的使用(代码实现)(2022/7/18)
1.过滤器 1.1 概念 过滤器: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理). 语法: 1.注册过滤器:Vue.filter(name,callback) 或 new V ...
- 30、vue 过滤器(filters)
filter Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 Ja ...
随机推荐
- [NOIP2017] 列队(平衡树)
考虑转化题意: 设这次操作删掉点\((x, y)\) 对于每一次向左看齐:在第x行删除\((x, y)\),并将y以后的点全部前移一位 对于每一次向前看齐:x以后的点全部上移一位,并在最后一列插入\( ...
- php对某个页面设置基础认证登录设置
记录下. 对某个页面设置认证 代码最开始添加: <?php $user = 'test'; $password = '111111'; // 通过HTTP认证进行验证 if (!isset($_ ...
- java并发编程 | 线程详解
个人网站:https://chenmingyu.top/concurrent-thread/ 进程与线程 进程:操作系统在运行一个程序的时候就会为其创建一个进程(比如一个java程序),进程是资源分配 ...
- 面向对象编程(OPP)
作者:狐狸家的鱼 本文链接:面向对象编程 GitHub:sueRimn 面向对象编程(OPP) 具有灵活.代码可复用.高度模块化等特点,易维护和开发 实例对象与new命令 1.对象 对象是单个实物的抽 ...
- LA4080/UVa1416 Warfare And Logistics 最短路树
题目大意: 求图中两两点对最短距离之和 允许你删除一条边,让你最大化删除这个边之后的图中两两点对最短距离之和. 暴力:每次枚举删除哪条边,以每个点为源点做一次最短路,复杂度\(O(NM^2logN)\ ...
- 微信小程序授权登录
目录 自定义授权页面 点击授权登录后出现微信自带的授权登录弹窗 <!--index.wxml--> <!-- 授权界面 --> <cover-view class='au ...
- 使用Docker构建nginx容器,并且启动后不会自动退出
为什么docker运行后就自动退出? docker 容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果docker 容器pid挂了,那么docker容器 ...
- Apache Hadoop 2.9.2 的快照管理
Apache Hadoop 2.9.2 的快照管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 快照相当于对目录做一个备份.并不会立即复制所有文件,而是指向同一个文件.当写入发生 ...
- Springboot集成FreeMarker
Apache官网对FreeMarker的解释如下: Apache FreeMarker™是一个模板引擎 :一个基于模板和变化的数据来生成文本输出(HTML网页,电子邮件,配置文件,源代码,等等)的Ja ...
- vue cookie
使用js-cookie依赖包 更多参考:https://www.npmjs.com/package/js-cookie 安装 cnpm install js-cookie --save 使用 impo ...