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 继承详解(三)
Jul 13 Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
JavaScript中获取纯正的undefined的方法
Mar 06 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
jquery编写日期选择器
Mar 16 Javascript
webpack构建react多页面应用详解
Sep 15 Javascript
JS实现简单的浮动碰撞效果示例
Dec 28 Javascript
JS 数组随机洗牌的实例代码
Sep 12 Javascript
Vue 用Vant实现时间选择器的示例代码
Oct 25 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
Jun 24 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
杏林同学录(五)
2006/10/09 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php实现无限级分类
2014/12/24 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
php数组和链表的区别总结
2019/09/20 PHP
js异常捕获方法介绍
2013/04/10 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
HTML的form表单和django的form表单
2019/07/25 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
公司司机岗位职责范本
2014/03/03 职场文书
会计员岗位职责
2014/03/15 职场文书
论文评语大全
2014/04/29 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技