vue计算属性的运用以及侦听器

123 阅读1分钟

1.Vue计算属性-computed

  • 数据可以进行逻辑处理
  • 对计算属性中的数据进行监视
  • 依赖固定的数据类型 语法
  computed: {
      "计算属性名" () {
          return "值"
      }
  }
<template>
  <div>
    <p>{{ sum }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      a:10,
      b:20
    };
  },
  computed:{
    sum(){
      return this.a+this.b
    }
  }
};
</script>


注意:

  • 计算属性也是vue变量,所以不能和data里面的变量重名
  • 函数内变量变化, 会自动重新计算结果返回 计算属性和函数区别: 计算属性和函数都能达到相同的效果,但是计算属性有个缓存的效果,只要值还没有发生改变,多次访问 计算属性会立即返回之前的计算结果,不会再次执行函数。只要计算属性的值发生改变才会再次执行计算属性,函数是每调用一次都会执行一次

2.计算属性的 Setter

计算属性默认只有 getter,不过在需要时你也可以提供一个 setter:

函数名:{
        get() {},
        set() {}
    }
  • 函数是需要调用才会被执行:
    • get () 函数使用计算属性时 get函数就会被调用
    • set () 函数给计算属性赋值时 set函数就会被调用
<template>
    <div>
        <input type="text" v-model="uname">
    </div>
</template>

<script>
export default {
    computed:{
        uname:{
           get(){
                 return 'admin'
           },
           set(value){
               console.log(value);
           }
        }
    }
};
</script>

3.侦听器-普通箭头

语法:

watch: {
	"被侦听的属性名" (newVal, oldVal){
	
    }
}
<template>
    <div>
        <input type="text" v-model="uname">
    </div>
</template>

<script>
export default {
    data() {
        return {
            uname:'admin'
        };
    },
    watch:{
    // newVal: 当前最新值
    // oldVal: 上一刻值
    name(newVal, oldVal){
      console.log(newVal, oldVal);
     }
    }
};
</script>

4.侦听器-深度侦听

语法: watch: {

    "要侦听的属性名": {
        deep: true, // 深度侦听复杂类型内变化
        handler (newVal, oldVal) {
            
        }
    }
}
<template>
    <div>
        <input type="text" v-model="obj.uname">
    </div>
</template>

<script>
export default {
    data() {
        return {
         obj:{
                uname:'admin'
         }
        };
    },
    watch:{
     obj:{
         deep:true,
         handler(newVal){
             console.log(newVal.uname);
         }
     }
    }
};
</script>