Vue计算属性:简化数据处理和视图更新的利器

这篇具有很好参考价值的文章主要介绍了Vue计算属性:简化数据处理和视图更新的利器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、计算属性的基本使用

  • 计算属性:一个特殊属性,值依赖于另外一些数据动态计算出来。
  • 🚩🚩🚩计算属性特点:函数内使用的变量改变,重新计算结果返回。
  • 💣💣💣注意:
    ①、计算属性必须定义在computed节点中。
    ②、计算属性必须是一个function,计算属性必须有返回值。
    ③、计算属性不能被当当作方法调用,要作为属性来使用。
computed:{
	"计算属性名"(){
		return "值"
	}
}
<template>
	<div>
		<p>和为:{{ num }}</p>
	</div>
</template>
  • 计算属性也是属性, 所以不要和data里重名, 用起来也和data类似

(一)全选反选案例

Vue计算属性:简化数据处理和视图更新的利器,Vue,vue.js,javascript,前端

<template>
  <div>
    <span>全选:</span>
    <input type="checkbox" v-model="ck" />
    <!-- <button >反选</button> -->
    <ul>
      <li>
        <input type="checkbox" />
        <span>名字</span>
      </li>
    </ul>
  </div>
</template>
  
<script>
export default {
  // 初始化数据
  data() {
    return {
      arr: [
        {
          name: "猪八戒",
          c: false, // 该项是否选中?
        },
        {
          name: "孙悟空",
          c: false,
        },
        {
          name: "唐僧",
          c: false,
        },
        {
          name: "白龙马",
          c: false,
        },
      ],
    };
  },
};
</script>
<style>
</style>

Vue计算属性:简化数据处理和视图更新的利器,Vue,vue.js,javascript,前端

<template>
  <div>
    <span>全选:</span>
    <input type="checkbox" v-model="ck" />
    <!-- <button >反选</button> -->
    <ul>
      <li v-for="(item,i) in arr" :key="i">
        <!-- :checked="item.c" 单项数据绑定 -->
        <!-- v-model="item.c"  双向数据绑定 -->
        <input type="checkbox" v-model="item.c"/>
        <span>{{item.name}}</span>
      </li>
    </ul>
  </div>
</template>

Vue计算属性:简化数据处理和视图更新的利器,Vue,vue.js,javascript,前端

📢📢📢(1)小选决定大选,大选被小选算计出来

方法一 —— forEach循环
<template>
  <div>
    <span>全选:</span>
    <input type="checkbox" :checked="bigCk" />
    <!-- <button >反选</button> -->
    <ul>
      <li v-for="(item, i) in arr" :key="i">
        <!-- :checked="item.c" 单项数据绑定 -->
        <!-- v-model="item.c"  双向数据绑定 -->
        <input type="checkbox" v-model="item.c" />
        <span>{{ item.name }}</span>
      </li>
    </ul>
  </div>
</template>
  
<script>
// s四个小选----->决定大选
// 1.四个小选状态,都选中!大选框也要选中!否则,不能选中
// 2.大选框的状态,是由四个小选框的状态决定!由四个小选状态计算出来
// [大选框的状态被计算出来!]
export default {
  // 初始化数据
  data() {
    return {
      arr: [
        {
          name: "猪八戒",
          c: true, // 该项是否选中?
        },
        {
          name: "孙悟空",
          c: false,
        },
        {
          name: "唐僧",
          c: false,
        },
        {
          name: "白龙马",
          c: false,
        },
      ],
    };
  },
  //计算属性:
  computed:{
    // 【简单写法】语法:
    // 自定义属性名:(){计算出某个值的过程   return 结果; } 
    bigCk(){
      // 四个小选-->决定大选
      let key;//大选值
      let num=0;// 小选选中的个数

      // 统计小选选中的个数
      // this.arr当前的组件对象arr
      this.arr.forEach(item =>{
        if(item.c==true){
          num++;// 统计
        }
      });

      // num 统计的结果
      if(num==this.arr.length){
        // 选中的个数 和 数组的长度一样
        key = true;
      }else{// 有的没有选中
        key = false;
      }
      return key;
    }
  },
};
</script>
方法二 —— every方法
①、【计算属性的简单写法】
  • 🤔🤔🤔every()方法是数组对象的一个方法,它用于检测数组中的所有元素是否都满足某个条件,如果所有元素都满足条件,则返回true,否则返回false。
ck(){
  return this.arr.every(item => item.c==true)
}

Vue计算属性:简化数据处理和视图更新的利器,Vue,vue.js,javascript,前端

②、【完整写法】
ck:{
  get(){
    return this.arr.every(item => item.c==true);
  }
}

📢📢📢(2)全选算计小选

  • 点击“选中的”全选按钮,所有的选项都取消。
<template>
  <div>
    <span>全选:</span>
    <input type="checkbox" v-model="ck" />
    <!-- <button >反选</button> -->
    <ul>
      <li v-for="(item, i) in arr" :key="i">
        <!-- v-model="item.c"  双向数据绑定👇👇👇👇👇 -->
        <input type="checkbox" v-model="item.c" />
        <span>{{ item.name }}</span>
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  // 初始化数据
  data() {
    return {
      arr: [
        {
          name: "猪八戒",
          c: true, // 该项是否选中?
        },
        {
          name: "孙悟空",
          c: false,
        },
        {
          name: "唐僧",
          c: false,
        },
        {
          name: "白龙马",
          c: false,
        },
      ],
    };
  },
  //计算属性:
  computed:{
      ck:{
        get(){
          return this.arr.every(item => item.c==true);
        },
        set(val){//ck要算计别人,得让视图上有得到ck值机会
          //把val值设置给每一个小选框!
          this.arr.forEach(item =>item.c=val);
        }
      }
  },
};
</script>
  • 🔔🔔🔔注意:
    什么时候用计算属性:
    ①、简单写法:发现某个值,被算计出来!!
    ②、完整写法:除了被算计,还要算计别人!!

(二)计算属性的设置问题—完整写法

  1. ✅✅✅计算属性默认情况下只能获取,不能修改。
  2. ✅✅✅要给计算属性赋值,就必须写计算属性的完整写法!!
computed:{
	full:{
		get(){
			...
		},
		set(value){
			...
		}
	}
}
  • 💭💭💭什么时候用计算属性完整写法? 给计算属性变量赋值时。

(三)不用计算属性,用函数调用能实现吗?计算属性优势在哪里?

📢📢📢(1)计算属性的缓存说明

  • 🍂🍂🍂计算属性,基于依赖项的值进行缓存,依赖的变量不变,都直接从缓存取结果。
  • 计算属性如果被多次使用,性能极高。
<template>
  <div>
    <ul>
      <li v-for="(item,i) in list" :key="i"> {{ item }}</li>
    </ul>
    <h1>总分由方法调用:{{ zf() }}</h1>
    <h1>总分由方法调用:{{ zf() }}</h1>
    <h1>总分由方法调用:{{ zf() }}</h1>

    <h1>总分由计算属性:{{ jszf }}</h1>
    <h1>总分由计算属性:{{ jszf }}</h1>
    <h1>总分由计算属性:{{ jszf }}</h1>
  </div>
</template>

<script>
export default {
  data(){
    return{
      list:[88,99,100]
    }
  },
  methods:{
    // 没有使用计算属性,用常规方法调用,返回值
    zf(){
      console.log("方法调用")
      return this.list.reduce((sum,item) => sum+=item,0);
    }
  },
  computed:{
    jszf(){
      console.log("计算属性")
      return this.list.reduce((sum,item) => sum+=item,0);
    }
  }
}
</script>

Vue计算属性:简化数据处理和视图更新的利器,Vue,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-566167.html

  • 对比一下函数执行的次数?

📢📢📢(2)优势

  • 🍗🍗🍗计算属性特点?
    ①、计算后会立刻缓存,下次直接读缓存
    ②、依赖项改变, 函数会重新执行 并 重新缓存
  • 多次使用计算属性,性能会极高

到了这里,关于Vue计算属性:简化数据处理和视图更新的利器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3——解决数据更新而视图未更新问题

    最近有一个项目遇到一个问题:是一个弹窗操作数据,当弹窗里的数据已经发生改变时,而视图并没有改变,未能得到及时更新,因此归纳了以下方法来解决这个问题 1、强制更新 2、在数据修改的组件上加上标识符 修改数据时 3、在视图组件中使用 v-if 修改值之后将组件销毁

    2024年02月16日
    浏览(48)
  • 云计算与大数据处理技术_云计算与大数据处理

    AIoT技术分析:云计算一般的计算机技术很难支撑企业的运作,于是云计算顺应时代而生,广泛地应用到了企业中。 云计算的概念 云计算是一种新兴的商业计算模型。... 并支持大规模数据处理、高容错性和自我管理等特性,提供PB级的存储能力,使用结构化的文件来存储数据,并整个

    2024年02月01日
    浏览(54)
  • 排查及处理hibernate自动更新(无缘故的)实体数据及表数据的根本问题,hibernate脏读更新,注意非常实用

    这里我默认大家都对hibernate的实体时态问题有所了解,并且知道hibernate是有内存快照机制,会自动更新数据库。 但是我们在开发过程中总是会无缘无故就更新数据库了,导致会在一些只读的spring事务中报错。这使我们抓狂,往往遇到这个情况我们仔细查看代码后也没有发现哪

    2024年02月16日
    浏览(38)
  • vue3中数据更新,视图没有更新解决方案

    Vue 3.0 中我们使用 reactive() 定义的 响应式 数据的时候,当我们对象再次赋值,我们发现数据已经修改成功,但是页⾯并没有自动渲染成最新的数据; 使用vue的强制刷新处理 scriptsetup import {defineComponent , ref , computed , toRefs , getCurrentInstance} from \\\'vue\\\' constinternalInstance = getCurrentIns

    2024年02月17日
    浏览(46)
  • FlinkCDC系列:数据同步对部分字段的处理,只更新部分字段

    在flinkCDC源数据配置中,只对表中的部分字段关注,通过监控部分字段进行数据更新或者不更新,对数据进行同步。主要通过以下两个参数: column.exclude.list 默认: 空字符串 一个可选的、以逗号分隔的正则表达式列表,与列的完全限定名称匹配以从更改事件记录值中排除。列

    2024年02月06日
    浏览(39)
  • 云计算与大数据处理:实时计算与数据流

    云计算和大数据处理是当今信息技术领域的两个热门话题。随着互联网的普及和人们生活中的各种设备的不断增多,我们生活中的数据量不断增加,这些数据需要存储和处理。云计算是一种基于互联网的计算资源共享和分配模式,可以让用户在需要时轻松获取计算资源,从而

    2024年04月13日
    浏览(39)
  • vue3中数据更新了,但是视图没有更新的5中方案

    vue 3.0 ref 和 Reactive 数据响应式,以及使用 Reactive 数据已更新但页面没有同步刷新异常 方案1:Vue 3.0 中我们使用 reactive() 定义的响应式数据的时候,当我们对象再次赋值,我们发现数据已经修改成功,但是页⾯并没有自动渲染成最新的数据; 这时我们可以改成 ref () 或者对

    2024年01月18日
    浏览(43)
  • vue3 使用UI框架reactive数据更新,视图不更新问题

    本篇主要记录两个问题,然而这两个问题又都可以对应同一种解法。废话少说,解决方法在最上面。推荐格式如下: 一定一定要再多包一层,不然就会遇到一些问题。(⊙﹏⊙)虽然这是一句废话。下面的内容过于基础且本篇只记录bug和解法,想要探求为什么的呢,还请自己去

    2024年02月12日
    浏览(34)
  • 数据架构与云计算:如何利用云计算资源进行数据处理

    随着数据的爆炸增长,数据处理和分析成为了企业和组织中的关键技能。云计算是一种新兴的技术,它可以让我们在分布式环境中进行数据处理和分析。在这篇文章中,我们将探讨如何利用云计算资源进行数据处理,以及相关的核心概念、算法原理、具体操作步骤和数学模型

    2024年04月14日
    浏览(41)
  • FlinkCDC系列:通过skipped.operations参数选择性处理新增、更新、删除数据

    在flinkCDC源数据配置,通过debezium.skipped.operations参数控制,配置需要过滤的 oplog 操作。操作包括 c 表示插入,u 表示更新,d 表示删除。默认情况下,不跳过任何操作,以逗号分隔。配置多个操作,需要英文逗号分隔。 官网说明地址:Debezium connector for MySQL :: Debezium Documentati

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包