欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Vue学习笔记之计算属性与侦听器用法

程序员文章站 2022-04-09 17:02:11
本文实例讲述了vue计算属性与侦听器用法。分享给大家供大家参考,具体如下: vue之所以加载速度非常块,是因为在数据改变时,它并不是将所有组件都刷新,而是在重用代码的基础上对发生改变...

本文实例讲述了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程序设计有所帮助。