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十个最常用的自定义函数(中文版)
Sep 07 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
Sep 05 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
Jan 18 Javascript
使用Electron构建React+Webpack桌面应用的方法
Dec 15 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 Javascript
vue实现在data里引入相对路径
Jun 05 Vue.js
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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
php $_ENV为空的原因分析
2009/06/01 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript call和apply方法
2008/11/24 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
JS二分查找算法详解
2017/11/01 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python Django 命名空间模式的实现
2019/08/09 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
Python识别验证码的实现示例
2020/09/30 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
家长对小学生的评语
2014/01/28 职场文书
大一新生学期自我评价
2014/04/09 职场文书
入党综合考察材料
2014/06/02 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
成人成长感言如何写?
2019/08/16 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js