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玩一玩WSH吧
Feb 23 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
Aug 08 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
jQuery中remove()方法用法实例
Dec 25 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
javascript基础知识分享之类与函数化
Feb 13 Javascript
基于JavaScript实现复选框的全选和取消全选
Feb 09 Javascript
利用js给datalist或select动态添加option选项的方法
Jan 25 Javascript
微信小程序实现左右联动的实战记录
Jul 05 Javascript
vue 组件内获取actions的response方式
Nov 08 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实现的服务器一致性hash分布算法示例
2018/08/09 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
西安交大自主招生自荐信
2014/01/27 职场文书
文明寝室申报材料
2014/05/12 职场文书
美食节目策划方案
2014/05/31 职场文书
收入证明范本
2015/06/12 职场文书
遗失证明范文
2015/06/19 职场文书
高一数学教学反思
2016/02/18 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
MongoDB支持的索引类型
2022/04/11 MongoDB