【web高级 01vue 】 vue预习课04 计算属性和监听器

计算属性 和 监听器

模板内的表达式非常便利,但是设计他们的初衷是用于简单运算。在模板中放入太多的逻辑会让模板过重且难以维护,此时就可以考虑计算属性和监听器。
范例:数量统计

<!-- 商品总数 -->
      <p>
        <!-- 表达式 -->
        <!-- 食物总数:{
    
    {
    
    foodList.length + '种'}} -->

        <!-- 计算属性 -->
        <!-- 食物总数:{
    
    {
    
    total}} -->

        <!-- 监听器 -->
        食物总数:{
    
    {
    
    totalCount}}
      </p>

  <script>
 const app = new Vue({
    
    
        el: "#app",
        data() {
    
    
          return {
    
    
            foodList: ["萝卜", "白菜"],
            totalCount: 0,
          };
        },
        computed: {
    
    
          total() {
    
    
            //计算属性有缓存性:如果值没有发生变化,则页面不会重新渲染
            return this.foodList.length + "种";
          },
        },

        //默认情况下watch初始化时,不执行
        // watch: {
    
    
        //         //这种写法的话,刚进入页面的时候,展示0,但是实际是2。怎么解决?
        //         //用带选项的watch
        //         //以后变化之后才会执行,刚开始不会执行
        //   foodList(newValue, oldValue) {
    
    
        //         this.totalCount = newValue.length +  "种";
        //   },
        // },

        watch: {
    
    
          foodList: {
    
    
            immediate: true, //立即执行一次
                //deep: true,//数据层层次深,结构复杂
            handler(newValue, oldValue) {
    
    
              this.totalCount = newValue.length + "种";
            },
          },
        },
        /*
        computed 和 watch
        从简洁性来说,computed更简洁
        在开发中,如果能用computed实现,就先使用computed
        computed具有缓存性,性能比较好,写出来比较简单
        watch有立刻执行的问题,还需要在data里面额外的声明一些data属性
        */
                
      });
  </script>

计算属性和监听器

计算属性 vs 监听器

  • 语境上的差异
//一个值变化了,我要做些事情,适合做一个值影响多个值的情形
watch:{
	firstName(newValue, oldValue){
			this.fullName = this.firstName + "  "  + this.lastName
	},
	lastName(newValue, oldValue){
		this.fullName = this.firstName + "  "  + this.lastName
	}
}
//一个值由其他值得来,这些值变了我也要变,适合做多个值影响一个值的情形
computed:{
	fullName(){
		return  this.firstName + "  "  + this.lastName
	}
}

在这里插入图片描述

计算属性 vs 监听器

  • 监听器更通用,理论上计算属性能实现的侦听器也能实现
  • 处理数据的场景不同,监听器适合一个数据影响多个数据,计算属性适合一个数据受多个数 据影响
  • 计算属性有缓存性,计算所得的值如果没有变化不会重复执行
  • 监听器适合执行异步操作或较大开销操作的情况, 范例

猜你喜欢

转载自blog.csdn.net/weixin_42580704/article/details/110316969