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特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
javascript制作游戏开发碰撞检测的封装代码
Mar 31 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
需要牢记的JavaScript基础知识
Sep 25 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
详解vue-router 路由元信息
Sep 13 Javascript
IDEA安装vue插件图文详解
Sep 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
SONY SRF-M100的电路分析
2021/03/02 无线电
PHP 变量定义和变量替换的方法
2009/07/30 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
前端性能优化及技巧
2016/05/06 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
详解React之key的使用和实践
2018/09/29 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
JavaScript的一些小技巧分享
2021/01/06 Javascript
python中常用的九种预处理方法分享
2016/09/11 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
python操作链表的示例代码
2020/09/27 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
大学生社会实践活动总结
2014/07/03 职场文书
保密工作整改报告
2014/11/06 职场文书
公司搬迁通知
2015/04/20 职场文书
入党函调证明材料
2015/06/19 职场文书
学雷锋广播稿大全
2015/08/19 职场文书