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实现的一个include函数
Jul 21 Javascript
JavaScript Undefined,Null类型和NaN值区别
Oct 22 Javascript
Dom 结点创建 基础知识
Oct 01 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
jQuery+Pdo编写login登陆界面
Aug 01 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
Javascript之面向对象--方法
Dec 02 Javascript
Node.js服务器开启Gzip压缩教程
Aug 11 Javascript
JS中跳出循环的示例代码
Sep 14 Javascript
理解Koa2中的async&amp;await的用法
Feb 05 Javascript
vue+element实现打印页面功能
May 20 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 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
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
中学生校园广播稿
2014/01/16 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
六查六看六改心得体会
2014/10/14 职场文书
后进生评语大全
2015/01/04 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫