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获取页面上被选中文字的方法技巧
Mar 13 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
react高阶组件添加和删除props
Apr 26 Javascript
微信小程序如何自定义table组件
Jun 29 Javascript
Vue Components 数字键盘的实现
Sep 18 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
PHP基于yii框架实现生成ICO图标
2015/11/13 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
json数据的列循环示例
2013/09/06 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
详解JS构造函数中this和return
2017/09/16 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
Python编程中的异常处理教程
2015/08/21 Python
八大排序算法的Python实现
2021/01/28 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
求职信怎么写
2014/05/23 职场文书
媒体宣传策划方案
2014/05/25 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
2015入党自传格式范文
2015/06/26 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
React列表栏及购物车组件使用详解
2021/06/28 Javascript
vue使用watch监听属性变化
2022/04/30 Vue.js