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

vue3:computed

vue3:computed

扫码或者点击文字后台提问
在这里插入图片描述

computed 支持选项式写法 和 函数式写法
1.选项式写法 支持一个对象传入get函数以及set函数自定义操作
2.函数式写法 只能支持一个getter函数不允许修改值的

基础示例

<template><div><div>姓:<input type="text" v-model="firstName"></div><div>名:<input type="text" v-model="lastName"></div><div>全名:{{ name }}</div><div><button @click="changeName">修改</button></div></div>
</template>
<script setup lang='ts'>
import { ref, computed } from 'vue';
/*** computed 支持选项式写法 和 函数式写法* 1.选项式写法 支持一个对象传入get函数以及set函数自定义操作* 2.函数式写法 只能支持一个getter函数不允许修改值的*/
let firstName=ref('张');
let lastName=ref('三');// //1.选项式写法 支持一个对象传入get函数以及set函数自定义操作
// let name=computed<string>({
//   get () {
//     // 读取值操作
//     return firstName.value + '-' + lastName.value
//   },
//   set (newVal) {
//     // 设置值操作
//     [firstName.value,lastName.value] = newVal.split('-')//   }
// });
// const changeName = () => {
//   name.value = '小-田'
// }//2.函数式写法 只能支持一个getter函数不允许修改值的
let name = computed(() => firstName.value + '-' + lastName.value)
</script>
<style scoped></style>

实战示例

<template><div><input v-model="keyWord" type="text" placeholder="搜索"></div><div style="margin-top: 20px;"><table border width="600" cellpadding="0" cellspacing="0"><thead><tr><th>物品名称</th><th>物品单价</th><th>物品数量</th><th>物品总价</th><th>操作</th></tr></thead><tbody><tr v-for="(item,index) in searchData"><td align="center">{{ item.name }}</td><td align="center">{{ item.price }}</td><td align="center"><button @click="item.num>1?item.num-- : null">-</button>{{ item.num }}<button @click="item.num<99?item.num++ : null">+</button></td><td align="center">{{ item.num * item.price }}</td><td><button @click="del(index)">删除</button></td></tr></tbody><tfoot><tr><td colspan="5" align="right">总价:{{total}}</td></tr></tfoot></table></div>
</template>
<script setup lang='ts'>
import { ref, reactive, computed } from 'vue';
let keyWord=ref<string>("");
// 接口:定义数据类型
interface Data {name:string,price:number,num:number,
}
// 声明 Data 类型的数据
let data = reactive<Data[]>([{name:"小田的大瓜",price:500,num:1},{name:"小田的红衣服",price:10,num:1},{name:"小田的黑袜子",price:1000,num:1}
])
// 计算总价
const total = computed(() => {return data.reduce((prev:number,next:Data) => {return prev + next.num * next.price}, 0)
})
// 搜索功能
const searchData = computed(() => {return data.filter((item:Data) => {return item.name.includes(keyWord.value);})
})
const del = (index:number) => {data.splice(index,1)
}
</script>
<style scoped></style>

http://www.mrgr.cn/news/76381.html

相关文章:

  • HarmonyOS Next系列之华为账号一键登录功能实现(十四)
  • Spring cloud 用户登录以及用户信息流转大致流程
  • word中电流符号i或者j,这两个字母的头上的点会消失---完美解决办法
  • net-http-transport 引发的句柄数(协程)泄漏问题
  • windows系统如何将基座大模型私有化部署
  • 【Rust自学】11.3. 自定义错误信息
  • 我谈二值形态学基本运算——腐蚀、膨胀、开运算、闭运算
  • web安全漏洞之ssrf入门
  • 优化C++设计模式:用模板代替虚函数与多态机制
  • 二分搜索的三种方法
  • 正则表达式(补充)
  • vue3: ref, reactive, readonly, shallowReactive
  • uniapp: 微信小程序包体积超过2M的优化方法
  • Vue和Vue-Element-Admin(十三):基于vue2比较学习vue3
  • 【AIGC】如何通过ChatGPT提示词Prompt定制个性学习计划
  • vue3: toRef, reactive, toRefs, toRaw
  • linux下编译安装memcached
  • Android ART知多少?
  • 《抽象类和接口》
  • 渗透测试之信息收集 DNS主机发现探测方式NetBIOS 协议发现主机 以及相关PorCheck scanline工具的使用哟
  • 跳房子(弱化版)
  • 芯原科技嵌入式面试题及参考答案
  • cMake编译github中源码
  • flink cdc 应用
  • 重建大师跑空三,出现进度条回退是什么原因?
  • 城市轨道交通数据可视化的应用与优势