Vue学习笔记之计算属性与侦听器用法


Posted in Javascript onDecember 07, 2019

本文实例讲述了Vue计算属性与侦听器用法。分享给大家供大家参考,具体如下:

vue之所以加载速度非常块,是因为在数据改变时,它并不是将所有组件都刷新,而是在重用代码的基础上对发生改变的地方进行渲染。同时,还得益于计算属性的使用:

1、计算属性

像绑定普通属性一样在模板中绑定计算属性。例如reverseName属性依赖于firstName和lastName,当firstName或lastName发生改变时,依赖于它的 reverseName 也会更新。

利用函数方法也可以实现类似的效果,不同的是计算属性是基于它们的依赖进行缓存的。只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 firstName 还没有发生改变,再次访问 reversedName 计算属性会立即返回之前的计算结果,而不必再次执行函数。相比之下,每当触发重新渲染时,调用方法将总会再次执行函数.

为什么需要缓存?假设我们有一个性能开销比较大的的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性 B 依赖于 A 。如果使用函数,每获得一次B就要调用一次函数进行计算,造成很大开销!

计算属性默认为get方法,也可以设定set方法,接收传入处理数据。例如传入originalName,set方法对其进行拆解并复制给firstName与lastName,并引起firstName与lastName改变,调用get()方法。

<div id="app">
    <p>{{originalName}}</p>
    <p>{{reverseName}}</p>
    <button @click="deal()">反转名字</button>
</div>
let vue=new Vue({
    el:'#app',
    data:{
      firstName:'',
      lastName:'',
      originalName:"super tory"
    },
    methods:{
      deal(){
        this.reverseName=this.originalName;
      }
    },
    computed:{            //计算属性钩子
      reverseName:{
        set(string){  //通过set方法对传入参数this.originalName进行操作
          let name=string.split(' ');
          this.firstName=name[1];
          this.lastName=name[0];
        },
        get(){      //通过get方法返回值
          return this.firstName+' '+this.lastName;
        }
      }
    }
});

2、侦听器watch

在Vue中提供一个钩子,侦听data中的某个变量是否改变,如果改变则执行响应函数。

<div id="app2">
  <input v-model="listen">
</div>
let vue2=new Vue({
  el:'#app2',
  data:{
    listen:''
  },
  watch:{      //定义侦听器钩子
    listen:function () {  //定义函数侦听listen的变化
      console.log("input内容发生改变");
    }
  }
});

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
ImageFlow可鼠标控制图片滚动
Jan 30 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
js实时获取系统当前时间实例代码
Jun 28 Javascript
调用jQuery滑出效果时闪烁的解决方法
Mar 27 Javascript
通用javascript代码判断版本号是否在版本范围之间
Nov 29 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
两种简单的跨域方法(jsonp、php)
Jan 02 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
React Native悬浮按钮组件的示例代码
Apr 05 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
解决layer.confirm快速点击会重复触发事件的问题
Sep 23 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
Dec 07 #Javascript
JQuery样式与属性设置方法分析
Dec 07 #jQuery
JQuery常用简单动画操作方法回顾与总结
Dec 07 #jQuery
json解析大全 双引号、键值对不在一起的情况
Dec 06 #Javascript
js实现图片粘贴到网页
Dec 06 #Javascript
JavaScript中的函数申明、函数表达式、箭头函数
Dec 06 #Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 #Javascript
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python NumPy库安装使用笔记
2015/05/18 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python3中sys.argv的实例用法
2020/04/24 Python
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
翻译学院毕业生自荐书
2014/02/02 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
党员干部学习心得体会
2016/01/23 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书