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的执行过程(图文)
May 20 Javascript
jQuery中对节点进行操作的相关介绍
Apr 16 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
jQuery获取样式中颜色值的方法
Jan 29 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
Oct 30 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
vue组件生命周期详解
Nov 07 Javascript
Vue搭建后台系统需要注意的问题
Nov 08 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
用javascript制作qq注册动态页面
Apr 14 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP eval函数使用介绍
2013/12/08 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
Python日志模块logging基本用法分析
2018/08/23 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python3 下载网络图片代码实例
2019/08/27 Python
python程序 创建多线程过程详解
2019/09/23 Python
python爬虫实现获取下一页代码
2020/03/13 Python
python openpyxl模块的使用详解
2021/02/25 Python
python3判断IP地址的方法
2021/03/04 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
如何强制垃圾回收
2015/10/06 面试题
启动一个线程是用run()还是start()
2016/12/25 面试题
技术总监的工作职责
2013/11/13 职场文书
酒店节能减排方案
2014/05/26 职场文书
团队拓展活动方案
2014/08/28 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
基层党支部承诺书
2015/04/30 职场文书