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

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?