Vue3的computed和watch

目录

1、computed

2、computed完整写法

 3、watch

4、watch监听对象具体属性

5、watch 监听reactive数据


1、computed

基于现有的数据计算出新的数据

<script setup >import {ref,computed} from 'vue'
const num=ref(1)
const doubleNum=computed(()=>{return num.value*2
})
const goods=ref([{id:1001,price:5000,name:'小米手机'
},
{id:1002,price:4000,name:'华为手机'
},
{id:1003,price:6000,name:'三星手机'
}
])
//筛选出价格大于等于5000的商品
const filterGoods=computed(()=>{return goods.value.filter(item=>item.price>=5000)
})
</script><template>
<div>hello,world</div>
<p>{{ num }}- {{ doubleNum }}</p>
<p>{{ filterGoods }}</p>
</template><style scoped></style>

2、computed完整写法

<script setup >import {ref,computed} from 'vue'
const firstName=ref('')
const lastName=ref('')
//简写  只提供get
// const fulName=computed(()=>{
//     return firstName.value+lastName.value
// })
//完整写法const fulName=computed({//get:function(){} 与 get() {} 等价//get:()=>{}  箭头函数不可简写get(){return firstName.value+lastName.value},set(newV){firstName.value=newV.substring(0,1)lastName.value=newV.substring(1)}
})
</script><template>
<div>hello,world</div>
<input type="text" v-model="firstName">
<input type="text" v-model="lastName">
<input type="text" v-model="fulName">
</template><style scoped></style>

 3、watch

1 . 侦听一个数据

第一个参数:监听的数据 第二个回调函数

2.侦听多个数据

第一个参数监听的数据构成的数组 ​ 第二个参数回调函数

3.立刻调用 (第三个参数位一个对象,里面可放immediate:true)

4.深度监听 (第三个参数位一个对象,里面可放 deep:true)

<script setup >import {ref,watch} from 'vue'
const num=ref(1)
// const age=ref(10)
const obj=ref({id:1,name:'电视',price:3000
})
// 1  侦听一个数据
//第一个参数:监听的数据    第二个回调函数watch(num,(newV,oldV)=>{console.log(newV,oldV)
})
//2  侦听多个数据
//第一个参数监听的数据构成的数组
//第二个参数回调函数
// watch([num,age],([newNum, newAge],[oldNum, oldAge])=>{
//   console.log(newNum, newAge);
// })// watch([num,age],([newNum,newAge],[oldNum,oldAge])=>{
//     console.log(newNum,newAge)
// })//3  立刻调用   immediate
//  watch(num,(newV,oldV)=>{
//     console.log('立刻调用')
//     console.log(newV,oldV)
//  },{
//     immediate:true
//  })//4  深度监听
watch(obj,(newV,oldV)=>{console.log(newV,oldV)
},{deep:true
})
const changeObj=()=>{obj.value.price -=200
}</script><template>
<div>hello,world</div>
<p>{{ num }}</p>
<p>{{ obj }}</p><button @click="changeObj">修改obj</button>
</template><style scoped></style>

4、watch监听对象具体属性

<script setup >import {ref,watch} from 'vue'
const obj=ref({id:1,name:'电视',price:3000
})
//深度监听
// 第一个参数 可以是函数,函数的返回值就是被侦听的数据//分开监听数据的变化
//只有价格改变才监听
// watch(()=>obj.value.price,(newV,oldV)=>{
//     console.log(newV,oldV)
// },{
//     deep:true
// })// watch(()=>obj.value.name,(newV,oldV)=>{
//     console.log(newV,oldV)
// },{
//     deep:true
// })//监听数据变化写在一起
watch([()=>obj.value.price,()=>obj.value.name,()=>obj.value.id],(newV,oldV)=>{console.log(newV[0],oldV)
},{deep:true
})
const changeObj=()=>{// obj.value.price -=200obj.value.name='手机'// obj.value.id=200
}
</script><template>
<div>hello,world</div>
<button @click="changeObj">修改obj</button>
</template><style scoped></style>

5、watch 监听reactive数据

watch监控reactive数据,假如需要深层次监控属性需要手动开启deep:true或省略

watch监控ref数据,深层次监控属性 ,必须手动开启deep:true,不能省略,省略相当于默认 false

<script setup >import {reactive,watch} from 'vue'
const user=reactive({name:'admin',age:18,job:{jobName:'web前端工程师',salary:6000}
})
//侦听的是reactive数据,默认对第一层属性开启deep:true,此时无论有没有传入deep选项
//侦听的是ref引用数据,默认deep:false,监控的对象属性发生改变不会被监控到watch(user,(newV,oldV)=>{console.log(newV)
},{deep:true //关闭深度监控无效
})const changeAge=()=>{user.age++//假如需要侦听深层次数据,需要手动开启deep:trueuser.job.salary += 2000
}
</script><template>
<div>hello,world</div>
<p>{{ user }}</p>
<button @click="changeAge">修改age</button>
</template><style scoped></style>

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

latex表格示例(背景颜色、行距、线粗细、标题、表格长度)

导入库 \usepackage{colortbl} 代码 \begin{table}[H] \begin{center}%表格居中 \tabcolsep1.5cm%表格横向长度 \renewcommand\arraystretch{1.5}%设置表格行间距 \begin{tabular}{cc} \toprule[2pt]%设置线的宽度 %\specialrule{0em}{3pt}{8pt}%添加一条线&#xff0c;第一个…

《Linux高性能服务器编程》笔记08

Linux高性能服务器编程 本文是读书笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考 Linux高性能服务器编程源码: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服务器编程 文章目录 Linux高性能服务器编程第08章 高性能服务器程序框架8.1 服务器…

docker拉取镜像时指定其OS及CPU指令集类型

前言 之前在香橙派5上安装的时候碰到过一次指定镜像的OS及cpu指令集类型的问题&#xff0c;但是当时没有记录&#xff0c;现在用到 了又想不起来&#xff0c;干脆就自己记录一下。预防后面忘掉。docker报错截图 上次时在arm的cpu中运行x86镜像&#xff0c;这次时在x86中运行arm…

C语言从入门到入坟

前言 1.初识程序 有穷性 在有限的操作步骤内完成。有穷性是算法的重要特性&#xff0c;任何一个问题的解决不论其采取什么样的算法&#xff0c;其终归是要把问题解决好。如果一种算法的执行时间是无限的&#xff0c;或在期望的时间内没有完成&#xff0c;那么这种算法就是无用…

MYSQL库和表的操作(修改字符集和校验规则,备份和恢复数据库及库和表的增删改查)

文章目录 一、MSYQL库的操作1.连接MYSQL2.查看当前数据库3.创建数据库4.字符集和校验规则5.修改数据库6.删除数据库7.备份和恢复8.查看连接 二、表的操作1.创建表2.查看表结构3.修改表4.删除表 一、MSYQL库的操作 1.连接MYSQL 我们使用下面的语句来连接MSYQL&#xff1a; my…

关于session每次请求都会改变的问题

这几天在部署一个前后端分离的项目&#xff0c;使用docker进行部署&#xff0c;在本地测试没有一点问题没有&#xff0c;前脚刚把后端部署到服务器&#xff0c;后脚测试就出现了问题&#xff01;查看控制台报错提示跨域错误&#xff1f;但是对于静态资源请求&#xff0c;包括登…

【CSS】字体效果展示

测试时使用了Google浏览器。 1.Courier New 2.monospace 3.Franklin Gothic Medium 4.Arial Narrow 5.Arial 6.sans-serif 7.Gill Sans MT 8.Calibri 9.Trebuchet MS 10.Lucida Sans 11.Lucida Grande 12.Lucida Sans Unicode 13.Geneva 14.Verdana 15.Segoe UI 16.Tahoma 17.…

【2024华数杯国际数学建模竞赛】问题B 光伏发电 完整代码+结果分析+论文框架(二)

问题B&#xff08;二&#xff09; 5.2 问题二模型的建立与求解&#xff08;二&#xff09;5.1.4基于LSTM的时间序列预测模型5.1.5 LSTM的时间序列预测结果5.1.6 多元回归模型的预测结果5.1.7 LSTM时间序列模型的性能评价 5.2 问题二模型的建立与求解5.2.1基于皮尔逊系数相关性分…

【C++中STL】set/multiset容器

set/multiset容器 Set基本概念set构造和赋值set的大小和交换set的插入和删除set查找和统计 set和multiset的区别pair对组两种创建方式 set容器排序 Set基本概念 所有元素都会在插入时自动被排序。 set/multist容器属于关联式容器&#xff0c;底层结构属于二叉树。 set不允许容…

架构师的36项修炼-08系统的安全架构设计

本课时讲解系统的安全架构。 本节课主要讲 Web 的攻击与防护、信息的加解密与反垃圾。其中 Web 攻击方式包括 XSS 跨站点脚本攻击、SQL 注入攻击和 CSRF 跨站点请求伪造攻击&#xff1b;防护手段主要有消毒过滤、SQL 参数绑定、验证码和防火墙&#xff1b;加密手段&#xff0c…

java关键字概述——final及常量概述

前言&#xff1a; 打好基础&#xff0c;daydayup! final final概述 final关键字是最终的意思&#xff0c;可以修饰&#xff08;类&#xff0c;方法&#xff0c;变量&#xff09; final作用 修饰类&#xff1a;该类被称为最终类&#xff0c;特点为不能被继承 修饰方法&#xff…

智能GPT图书管理系统(SpringBoot2+Vue2)、接入GPT接口,支持AI智能图书馆

☀️技术栈介绍 ☃️前端主要技术栈 技术作用版本Vue提供前端交互2.6.14Vue-Router路由式编程导航3.5.1Element-UI模块组件库&#xff0c;绘制界面2.4.5Axios发送ajax请求给后端请求数据1.2.1core-js兼容性更强&#xff0c;浏览器适配3.8.3swiper轮播图插件&#xff08;快速实…

【笔试常见编程题01】删除公共字符串、组队竞赛、倒置字符串、排序子序列

1. 删除公共字符串 输入两个字符串&#xff0c;从第一字符串中删除第二个字符串中所有的字符。 例如&#xff0c;输入”They are students.”和”aeiou”&#xff0c;则删除之后的第一个字符串变成”Thy r stdnts.” 输入描述 每个测试输入包含2个字符串 输出描述 输出删除后的…

外包干了8个月,技术退步明显...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

v43-47.problems

1.for循环 一般地&#xff0c;三步走&#xff1a; for&#xff08;初始化&#xff1b;表达式判断&#xff1b;递增/递减&#xff09; &#xff5b; ....... &#xff5d; 但是&#xff0c;如果说声明了全局变量&#xff0c;那么第一步初始化阶段可以省略但是要写分号‘ ; ’…

Java后端开发:学籍系统核心逻辑

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

uniapp组件库fullScreen 压窗屏的适用方法

目录 #平台差异说明 #基本使用 #触发压窗屏 #定义压窗屏内容 #注意事项 所谓压窗屏&#xff0c;是指遮罩能盖住原生导航栏和底部tabbar栏的弹窗&#xff0c;一般用于在APP端弹出升级应用弹框&#xff0c;或者其他需要增强型弹窗的场景。 警告 由于uni-app的Bug&#xff0…

DEM高程地形瓦片数据Cesium使用教程

一、简介 从开始写文章到现在&#xff0c;陆续发布了全球90m、30m(包括哥白尼及ALOS)、12.5m全球级瓦片数据&#xff0c;以及中国12.5、日本10m、新西兰8m、等国家级瓦片数据&#xff0c;同时也发布了台湾20m、中国34省区12.5m等地区级瓦片数据。在数据发布的文章中对数据如何…

C#,最小生成树(MST)普里姆(Prim)算法的源代码

Vojtěch Jarnk 一、Prim算法简史 Prim算法&#xff08;普里姆算法&#xff09;&#xff0c;是1930年捷克数学家算法沃伊捷赫亚尔尼克&#xff08;Vojtěch Jarnk&#xff09;最早设计&#xff1b; 1957年&#xff0c;由美国计算机科学家罗伯特普里姆独立实现&#xff1b; 19…

车载激光雷达标定白板

随着科技的不断发展&#xff0c;自动驾驶技术逐渐成为汽车行业的重要发展方向。激光雷达作为自动驾驶中的重要传感器&#xff0c;其标定和校准是保证自动驾驶系统准确感知和决策的关键环节。本文将介绍自动驾驶激光雷达标定板的相关内容&#xff0c;包括标定板的作用、材料选择…