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 相关文章推荐
javascript 关闭IE6、IE7
Jun 01 Javascript
js event事件的传递与冒泡处理
Dec 06 Javascript
详细介绍8款超实用JavaScript框架
Oct 25 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
js实现跨域的多种方法
Dec 25 Javascript
js如何改变文章的字体大小
Jan 08 Javascript
再谈javascript注入 黑客必备!
Sep 14 Javascript
Angular使用cli生成自定义文件、组件的方法
Sep 04 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
你应该了解的JavaScript Array.map()五种用途小结
Nov 14 Javascript
小程序click-scroll组件设计
Jun 18 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
利用PHP生成CSV文件简单示例
2016/12/21 PHP
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
node.js基础知识小结
2018/02/26 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
Python三元运算实现方法
2015/01/12 Python
Python自定义线程池实现方法分析
2018/02/07 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
蒂娜商店:Tiina the Store
2019/12/07 全球购物
致长跑运动员广播稿
2014/01/31 职场文书
企业总经理职责
2014/02/02 职场文书
文明寝室申报材料
2014/05/12 职场文书
三严三实对照检查材料
2014/09/22 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
义卖募捐活动总结
2015/05/09 职场文书
礼貌问候语大全
2015/11/10 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL