05 vue3之computed用法

2024-08-28 07:12

本文主要是介绍05 vue3之computed用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

computed用法

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

1 函数形式

let name = computed(() => {return one.value + "---" + two.value; // 取值一定要加.value
});

2 对象形式

let name1 = computed({get() {return one.value + "---" + two.value;},set() {one.value + "---" + two.value;},
});

完整案例

<template><input v-model="one" type="text" /><input v-model="two" type="text" /><!-- <div>{{ one }}---{{ two }}</div> --><div>{{ name }}</div><div>{{ name1 }}</div></template><script setup lang="ts">
import { ref, reactive, computed } from "vue";
let one = ref("");
let two = ref("");
// 1种写法 函数式写法 不允许修改值
let name = computed(() => {return one.value + "---" + two.value; // 取值一定要加.value
});
// 2种写法 选项式写法 允许修改值
let name1 = computed({get() {return one.value + "---" + two.value;},set() {one.value + "---" + two.value;},
});</script><style scoped>
table,
td {border: 1px solid #333;
}thead,
tfoot {background-color: #333;color: #fff;
}
</style>

购物车案例:

能优化代码 减少多次调用

<template><table><inputplaceholder="请输入名称"v-model="keyWord"type="text"/><thead><tr><!-- <th colspan="2">The table header</th> --><th>名称</th><th>数量</th><th>价格</th><th>操作</th></tr></thead><tbody><tr v-for="item in searchData" :key="item"><td>{{ item.name }}</td><td><button @click="add(item, true)">+</button>{{ item.num}}<button @click="add(item, false)">-</button></td><td>{{ item.price * item.num }}</td><td><button @click="del(index)">删除</button></td></tr></tbody><tfoot><td></td><td></td><td></td><td>总价:{{ $total }}</td></tfoot></table>
</template><script setup lang="ts">
import { ref, reactive, computed } from "vue";
type shop = {name: string;num: number;price: number;
};
let keyWord = ref("");// let $total = ref<string>("0");
let data = reactive<shop[]>([{ name: "裤子", num: 1, price: 100 },{ name: "衣服", num: 1, price: 200 },{ name: "鞋子", num: 1, price: 300 },
]);
const searchData = computed(() => {return data.filter((item) =>item.name.includes(keyWord.value));
});let add = (item: shop, type: Boolean): void => {if (item.num < 99 && type) {item.num++;// total();}if (item.num > 1 && !type) {item.num--;// total();}
};
let del = (index: number) => {data.splice(index, 1);// total();
};/* const total = () => {$total.value = data.reduce((pre, next) => {return pre + next.price * next.num;}, 0);
}; */
// total();// 可以看到total被调用了很多次 我们可以使用computed优化代码
const $total = computed(() => {return data.reduce((pre, next) => {return pre + next.price * next.num;}, 0);
});
</script><style scoped>
table,
td {border: 1px solid #333;
}thead,
tfoot {background-color: #333;color: #fff;
}
</style>

这篇关于05 vue3之computed用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114084

相关文章

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Vue中插槽slot的使用示例详解

《Vue中插槽slot的使用示例详解》:本文主要介绍Vue中插槽slot的使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、插槽是什么二、插槽分类2.1 匿名插槽2.2 具名插槽2.3 作用域插槽三、插槽的基本使用3.1 匿名插槽

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安