Vue_计算属性,方法和侦听器

- 日理万妓 2022-05-22 13:22 347阅读 0赞

一.计算属性:
我们在开发当中通常会遇到这种情况,需要返回的是两个变量的计算值 ,那我们就在computed属性中去定义计算的方法:
eg:
我们现在有两个变量:fristname 和 lastname 。我们想要页面输出的是fullname 全名:
方法一:用computed计算属性来实现

  1. data(){
  2. return{
  3. firstname:'hani',
  4. lastname:'wen',
  5. }
  6. },
  7. computed:{
  8. fullname:function(){
  9. return this.firstname + ' ' +this.lastname
  10. }
  11. },

OK,在页面上就显示fullname的值了。(当我们用插值表达式,表达式的值会先在data中找,找不到再去计算属性computed中找)
效果:
这里写图片描述
方法二:当然方法也可以完成这个效果:

  1. methods:{
  2. fullname:function(){
  3. return this.firstname + ' ' +this.lastname
  4. }
  5. }

在页面上调用方法:{ {function()}}

  1. <h1>{ { fullname()}}<h1>

效果:
这里写图片描述
但是方法和计算属性有什么区别呢?
方法没有缓存机制,计算属性的性能更好。

方法三:watch监听fristname 和 lastname 来实现
先初始化数据:

  1. data(){
  2. return{
  3. firstname:'hani',
  4. lastname:'wen',
  5. fullname:'hani wen'
  6. }
  7. }

监听fristname 和lastname的变化,一旦有变化则触发:

  1. watch:{
  2. firstname:function(){
  3. this.fullname =this.firstname +' '+this.lastname;
  4. },
  5. lastname:function(){
  6. this.fullname = this.firstname + " "+this.lastname;
  7. },

效果:
这里写图片描述
虽然监听的方法能够实现计算的结果,也有缓存的机制,但是看起来冗余。
这三种综合来看,涉及到计算,还是用computed比较好。

二.计算属性的setter和getter
在computed中可以将fullname 定义成一个对象,在对象中定义get 和set 的方法。

  1. computed:{
  2. fullname:{
  3. get:function(){
  4. return this.firstname + ' ' +this.lastname
  5. },
  6. set:function(value){
  7. console.log(value);
  8. var arr = value.split(' ');
  9. this.firstname = arr[0];
  10. this.lastname = arr[1];
  11. }
  12. }
  13. },

在调用上get没有改变。set方法,在控制台上输入:app.fullname="dell Lee",然后就会更新到该实例上的数据中,并在页面做出响应

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vue计算属性侦听器

    [vue2计算属性和侦听器官网介绍][vue2] 1、功能不同,计算属性用于解决模板语法冗余问题;侦听器侦听data中某一个数据变化。 2、计算属性有缓存机制,侦听器没有缓

    相关 Vue计算属性侦听器

            本博客记录了小编在学习Vue过程中的体会与感悟,简单来说就是小编的学习笔记,学习地址主要为Vue的官网,官网地址为:[《Vue官方文档》][Vue]。相关学习笔