vue3中的computed

一.computed用法

 computed 计算属性就是当依赖的属性的值发生变化的时候,才会触发他的更改;如果依赖的值,不发生变化的时候,使用的是缓存中的属性值。

 computed 属性是 Vue3 中的一个响应式计算属性,它可以根据其他响应式数据的变化而自动更新其自身的值。 computed 属性通常用于处理需要根据其他响应式数据计算得出的值的情况,例如过滤和排序、数组计算等。 computed 属性的原理是使用了一个 getter 函数和一个 setter 函数来实现,并将计算结果缓存起来,以提高性能和减少计算次数。

1. 选项式写法:支持一个对象传入get函数和set函数自定义操作

<template>
  姓:<input v-model="firstName" type="text"></input>
  名:<input v-model="lastName" type="text"></input>
  <div>全名:{{ name }}</div>
  <button @click="changeName">测试computed</button>
</template>

<script setup lang="ts">
import { ref, computed } from 'vue'
const firstName = ref('张')
const lastName = ref('三')

// 1. 选项式写法 支持一个对象传入get函数和set函数自定义操作
const name = computed<string>({
  // 读取值
  get() {
    return firstName.value + '-' + lastName.value
  },
  // 写入值
  set(newVal) {
    console.log(newVal); // 李-四
    [firstName.value, lastName.value] = newVal.split('-') // 解构赋值
  }
})
const changeName = () => {
  name.value = '李-四'
}
</script>

<style scoped></style>

输入框中输入文字,全名跟着改变。 

 点击前:

点击后: set 中接收改变的值,然后赋值给自己想要的属性。

2.函数式写法:只能支持一个getter函数,不允许修改值

<template>
  姓:<input v-model="firstName" type="text"></input>
  名:<input v-model="lastName" type="text"></input>
  <div>全名:{{ name }}</div>
</template>

<script setup lang="ts">
import { ref, computed } from 'vue'
const firstName = ref('张')
const lastName = ref('三')

// 2. 函数式写法 只能支持一个getter函数,不允许修改值
const name = computed(() => { 
  return firstName.value + '-' + lastName.value
})
</script>

输入框中输入文字,全名跟着改变。 

使用函数式写法时,属性值为只读的,当想要改变数值时,会报错:

二. computed 原理

Vue3 中, computed 属性的原理是使用了一个 getter 函数和一个 setter 函数来实现。当我们访问计算属性的值时,会调用 getter 函数进行计算,并将计算结果缓存起来。当参与计算的响应式数据发生变化时,会触发依赖更新,并自动调用 getter 函数重新计算计算属性的值。当我们修改计算属性的值时,会调用 setter 函数进行更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/619686.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

福派斯猫粮,让猫咪胃口大开!

最近&#xff0c;我家的猫咪换了一种新的猫粮——福派斯猫粮。福派斯猫粮是一款国产的宠粮品牌&#xff0c;以其专业、高品质且营养均衡的特点&#xff0c;逐渐在猫咪饲养圈子里赢得了良好的口碑。作为猫咪的主人&#xff0c;我深感欣慰&#xff0c;因为我知道福派斯猫粮为我家…

【Spring Boot】Spring Boot 中的 Starter

Spring Boot 中的 Starter 1.常用 Starter2.为什么要用 Starter3.Starter 有哪些要素 我们都知道&#xff0c;Spring 的功能非常强大&#xff0c;但也有些弊端。比如&#xff1a;我们需要手动去配置大量的参数&#xff0c;没有默认值&#xff0c;需要我们管理大量的 jar 包和它…

基于滴滴平台数据测算的城市发展环境指数数据集

01、数据简介 在数字化浪潮的推动下&#xff0c;城市发展的脉搏正以前所未有的方式被捕捉和解读。滴滴平台&#xff0c;作为城市出行领域的佼佼者&#xff0c;其海量的出行数据不仅记录了市民的每一次出行轨迹&#xff0c;更深刻反映了城市发展的内在逻辑。 滴滴城市发展指数…

基于springboot实现高校教师电子名片系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现高校教师电子名片系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;名片信息因为其管理内容繁杂&#xff…

ThreadLocal全面解析

目录 一、ThreadLocal的介绍1、简介2、基本使用3、ThreadLocal与synchronized的区别 二、ThreadLocal的内部结构1、jdk早期设计2、JDK8设计3、内存泄露 三、ThreadLocal的核心方法源码1、set方法2、get方法3、initialValue方法4、withInitial方法5、remove方法6、子类Inheritab…

vue3实战Easy云盘(一):创建项目+登录注册页面+构建框架页+上传头像/修改密码/退出登录

一、创建项目 1.创建项目 2.安装各种依赖 npm install highlightjs/vue-plugin moefe/vue-aplayer aplayer axios docx-preview dplayer element-plus highlight.js js-md5 sass sass-loader spark-md5 vue-clipboard3 vue-cookies vue-pdf-embed vue-router …

动态IP避坑指南,怎样挑选合适的动态IP?

在现今这个数字化、网络化的时代&#xff0c;动态IP的使用越来越广泛&#xff0c;无论是为了保护网络安全、提高网络访问速度&#xff0c;还是为了实现某些特定的网络功能&#xff0c;动态IP都发挥着不可或缺的作用。然而&#xff0c;如何挑选一个合适的动态IP&#xff0c;避免…

git知识总结

要知道 本地回退后&#xff0c;反悔了&#xff0c;可以恢复。前提是已经提交了&#xff0c;提交了就丢不了。 git reflog git reset --hard commitId 以前git push不让推&#xff0c;就是没有对应关系。第一次推要setxxx参数。 前奏 设置用户名和邮箱&#xff0c;设置错…

docker 部署SSM项目(包含打包)

一&#xff1a;SSM项目打包 1.这个一定要勾选防止静态资源没打包上 2.第二步 3.第三步 4.更改名字(注意部署到线上的时候这里如果用docker或者window部署的话需要带这个项目名&#xff0c;不然会出现找不到接口的情况) ![在这里插入图片描述](https://img-blog.csdnimg.cn/dir…

C#中数组与列表,集合等的联系

C#中&#xff0c;所有数组都自动继承于System.Array这个抽象类&#xff0c;数组都为引用类型&#xff0c; 所有对数组的更新都会导致源数组的元素值的篡改。 而所有集合的根都来自可枚举接口IEnumerable 数组有三种样式&#xff1a; 数组的Rank&#xff08;秩&#xff09;属…

企业微信hook接口协议,ipad协议http,同步消息记录

同步消息记录 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信limit是int每次返回大小seq是int查询下标 请求示例 {"uuid":"ecb033af-6fcd-4ec2-880e-41f070b65eaf","limit":1000, "seq":1…

访客管理系统对于校园安全的重要性

校园访客办理计划是针对校园安全需求规划的安全办理体系&#xff0c;主要用于对校园外来人员的科学办理。要做好校园安全作业&#xff0c;把风险分子拒之门外尤为要害。校园访客办理计划实现访客实名制&#xff0c;并结合公安网、黑名单功用&#xff0c;对风险人员进行提前预警…

浅析vue3自定义指令

vue3中可以像下面这样使用自定义指令。 这里我们只是定义了一个vFoucs变量&#xff0c;vue怎么知道这是一个指令呢&#xff1f; 这是因为约定大于配置&#xff0c;vue3中有这样一个约定&#xff08;截图来自官方文档&#xff09;&#xff1a; 注意这里说的是驼峰命令&#x…

【class6】人工智能初步(选择一个合适的监督学习算法。)

【昨日内容复习】 进行监督学习时&#xff0c;第一个步骤是提取数据集的文本特征和对应的标签。 提取文本特征的具体步骤如下&#xff1a; STEP1. 构造词袋模型&#xff0c;提取数据集中的文本特征 STEP2. 使用toarray()函数&#xff0c;将X转换为一个NumPy数组&#xff0c;方…

初始化linux数据盘(3TB)分区-格式化-挂载目录

场景说明&#xff1a;某云给我们服务器加载了一块3TB的硬盘扩容&#xff08;没有直接扩&#xff0c;原因是原来的盘做的是mbr&#xff08;什么年代了&#xff0c;谁干的&#xff09;的分区&#xff0c;最大识别2TB&#xff09; 确认磁盘 输入命令lsblk 查看数据盘信息 &#…

PyQt5的多窗口设计

文章目录 步骤一步骤2步骤3步骤4步骤5完整的代码如下 步骤一 1.首先新建一个窗口&#xff0c;把对象名改为ParentWindow&#xff0c;然后保存&#xff0c;把.ui的名字改为Main_window.ui 步骤2 再新建一个窗口&#xff0c;把对象名改为ChildWindow1&#xff0c;然后保存&…

Python 旋转立方体

文章目录 效果图运行环境完整代码实现思路1. 导入库和定义常量2. 创建Cube类3. 实现Cube类的draw方法4. 实现主函数 效果图 运行环境 python版本&#xff1a;python3.x 依赖包&#xff1a; $ pip install pygame $ pip install numpy完整代码 import numpy as np # 导入 N…

【复试分数线】工科985历年分数线汇总(第三弹)

国家线 可以看作是考研上岸最最最基础的门槛。真正决定你能不能进入复试的还要看院线&#xff08;复试分数线&#xff09;&#xff01;今天我将分析考信号的5所工科类985近三年复试分数线&#xff0c;大家可以参考&#xff01;&#xff01; 分别是&#xff1a;①北京航空航天大…

k8s coredns配置

1.coredns可根据集群具体数量修改pod数&#xff0c;官方推荐比例为5/1&#xff0c;即有15台服务器最好是3个pod。 2.coredns会继承pod所在主机的dns解析,修改了主机的dns解析之后&#xff0c;coredns有一段时间的缓存&#xff0c;重启coredns才会在集群内部立刻生效该解析。 …

黑马甄选离线数仓项目day01(项目介绍)

课程介绍 项目名称 黑马甄选数仓形式 离线数仓开发业务类型 电商业务 电商介绍 B2B B2C C2C 项目属于 新零售电商 新零售 线上(网站,app,小程序&#xff09; 线下&#xff08;实体体验店&#xff09; 物流&#xff08;自营物流&#xff09; 项目行业 果蔬生鲜领域 商业模式 B…