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 相关文章推荐
js实现页面跳转重定向的几种方式
May 29 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
Dec 02 Javascript
bootstrap输入框组使用方法
Feb 07 Javascript
vue环境搭建简单教程
Nov 07 Javascript
JavaScript实现全选取消效果
Dec 14 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
Jan 15 Javascript
webpack4 CSS Tree Shaking的使用
Sep 03 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
关于layui表单中按钮自动提交的解决方法
Sep 09 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 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
mysql时区问题
2008/03/26 PHP
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP文件操作实例总结
2016/09/27 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
js select常用操作控制代码
2010/03/16 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python 性能优化技巧总结
2016/11/01 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
python实现任意位置文件分割的实例
2018/12/14 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
后进生转化工作制度
2014/01/17 职场文书
公开服务承诺制度
2014/03/26 职场文书
2014年党课学习材料
2014/05/11 职场文书
总经理人事任命书
2014/06/05 职场文书
大型公益活动策划方案
2014/08/20 职场文书
普通话演讲稿
2014/09/03 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书