当前位置: 首页 > news >正文

Vue计算属性computed()

1. 计算属性定义

获取计算属性值

<div>{{ 计算属性名称}}</div>

创建计算属性

let 定义的属性=ref/reactive....let 计算属性名称 = computed(() => {//这里写函数式,函数式里面包含定义属性//只有这个包含的定义属性被修改时才出发此函数式//通过计算属性名称countPass0,返回函数式的值return 函数式;
});let 计算属性名称 = computed({// getterget() {//这里写函数式,函数式里面包含定义属性//只有这个包含的定义属性被修改时才出发此函数式//通过计算属性名称countPass0,返回函数式的值return 函数式;},// setterset(newValue) {// get方法中包含的定义属性// newValue为计算属性名称.value获取的值定义属性=newValue},
});

计算属性赋值

计算属性名称.value=给与计算属性的值

2. 计算属性案例

<template><!--DOM元素调用变量时,不需要指定输出变量的value,因为Vue会帮你输出.value但是注意,这个帮助只会帮助顶级的ref属性才会被解包--><div>{{ p.count }}</div><br><div>count是否大于0:{{ countPass0 }}</div><br><div>count是否大于0:{{ countPass0GetSet }}</div><br><button @click="countAdd">设置count等于1</button>
</template>
<script setup>
//从vue中获取ref方法
import { computed, reactive } from "vue";name: "App";
let p = reactive({count: 0,
});//定义计算属性countPass0判断p.count是否大于0
let countPass0 = computed(() => {return p.count > 0 ? "是" : "否";
});//定义计算属性countPass0GetSet判断p.count是否大于0()
let countPass0GetSet = computed({// getterget() {return p.count > 0 ? "是" : "否";},// setter// 在直接修改p.count的情况下set()方法不会被执行,只有改变countPass0GetSet.value时才会执行set()set(newValue) {// newValue的值为countPass0GetSet.value的新值,p.count = newValue;console.log('计算属性收到的新值:',newValue);},
});function countAdd(){countPass0GetSet.value=1
}
</script><style scoped>
</style>

3. 计算属性与方法区别
说白了方法每次执行都会被调用,而计算属性只有内部属性值被改变的时候才会被调用
let countPass0 = computed(() => Date.now());
这个计算属性永远不会被调用,因为里面不包含任何定义的属性,所以不会触发countPass0这个计算属性

4.其他
Getter 不应有副作用​
计算属性的 getter 应只做计算而没有任何其他的副作用,这一点非常重要,请务必牢记。举例来说,不要改变其他状态、在 getter 中做异步请求或者更改 DOM!一个计算属性的声明中描述的是如何根据其他值派生一个值。因此 getter 的职责应该仅为计算和返回该值。在之后的指引中我们会讨论如何使用侦听器根据其他响应式状态的变更来创建副作用。

避免直接修改计算属性值​
从计算属性返回的值是派生状态。可以把它看作是一个“临时快照”,每当源状态发生变化时,就会创建一个新的快照。更改快照是没有意义的,因此计算属性的返回值应该被视为只读的,并且永远不应该被更改——应该更新它所依赖的源状态以触发新的计算。

http://www.lryc.cn/news/305934.html

相关文章:

  • JWT学习笔记
  • WSL里的Ubuntu 登录密码忘了怎么更改
  • 【软件测试面试】要你介绍项目-如何说?完美面试攻略...
  • 【Crypto | CTF】RSA打法 集合
  • 在springboot中调用openai Api并实现流式响应
  • C++构造函数重难点解析
  • QT day3 作业2.22
  • AR汽车行业解决方案系列之2-远程汽修
  • 每日五道java面试题之spring篇(五)
  • 挑战杯 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习
  • 12. Springboot集成Dubbo3(三)Dubbo-Admin
  • c语言的数据结构:找环状链表入口处
  • LabVIEW声速测定实验数据处理
  • 深入剖析C语言中的段错误:从内存模型到实战调试全方位解析
  • 1.操作Python入门Python安装和使用教程
  • STM32G030C8T6:定时器1ms中断(以64MHz外部晶振为例)
  • 人工智能聊天机器人如何帮助您实现工作与生活的平衡
  • 3分钟看懂设计模式01:策略模式
  • 数据结构与算法:算法详解
  • AOSP10 替换系统launcher
  • 视频互动游戏如何暴打海王和舔狗
  • 大学生多媒体课程学习网站thinkphp+vue
  • 信息系统项目管理师论文分享(质量管理)
  • Redis实现滑动窗口限流
  • SQL Server查询计划(Query Plan)——XML查询计划
  • 【day02】每天三道 java后端面试题:Java、C++和Go的区别 | Redis的特点和应用场景 | 计算机网络七层模型
  • 【Flink状态管理(八)】Checkpoint:CheckpointBarrier对齐后Checkpoint的完成、通知与对学习状态管理源码的思考
  • 防御保护第八、九、十、十一天笔记
  • 【TypeScript基础知识点】的讲解
  • 牛客周赛 Round 34 解题报告 | 珂学家 | 构造思维 + 置换环