vue3 watch和watchEffect的使用以及有哪些区别
作者:静女 发布时间:2024-05-05 09:11:09
标签:vue3,watch,watchEffect
1.watch *
引入watch
import { ref, reactive, watch, toRefs } from 'vue'
对基本数据类型进行监听----- watch特性:
1.具有一定的惰性lazy 第一次页面展示的时候不会执行,只有数据变化的时候才会执行
2.参数可以拿到当前值和原始值
3.可以侦听多个数据的变化,用一个侦听起承载
setup() {
const name = ref('leilei')
watch(name, (curVal, prevVal) => {
console.log(curVal, prevVal)
})
}
template: `Name: <input v-model="name" />`
对引用类型进行监听-----
setup() {
const nameObj = reactive({name: 'leilei', englishName: 'bob'})
监听一个数据
watch(() => nameObj.name, (curVal, prevVal) => {
console.log(curVal, prevVal)
})
监听多个数据
watch([() => nameObj.name, () => nameObj.name], ([curName, curEng], [prevName, curEng]) => {
console.log(curName, curEng, '----', prevName, curEng)
setTimeout(() => {
stop1()
}, 5000)
})
const { name, englishName } = toRefs(nameObj)
}
template: `Name: <input v-model="name" /> englishName: <input v-model="englishName" />`
2.watchEffect
没有过多的参数 只有一个回调函数
1.立即执行,没有惰性,页面的首次加载就会执行。
2.自动检测内部代码,代码中有依赖 便会执行
3.不需要传递要侦听的内容 会自动感知代码依赖,不需要传递很多参数,只要传递一个回调函数
4.不能获取之前数据的值 只能获取当前值
5.一些=异步的操作放在这里会更加合适
watchEffect(() => {
console.log(nameObj.name)
})
* 的取消 watch 取消 * 用法相同
const stop = watchEffect(() => {
console.log(nameObj.name)
setTimeout(() => {
stop()
}, 5000)
})
const stop1 = watch([() => nameObj.name, () => nameObj.name], ([curName, curEng], [prevName, curEng]) => {
console.log(curName, curEng, '----', prevName, curEng)
setTimeout(() => {
stop1()
}, 5000)
})
watch也可以变为非惰性的 立即执行的 添加第三个参数 immediate: true
watch([() => nameObj.name, () => nameObj.name], ([curName, curEng], [prevName, curEng]) => {
console.log(curName, curEng, '----', prevName, curEng)
setTimeout(() => {
stop1()
}, 5000)
}, {
immediate: true
})
来源:https://juejin.cn/post/6921581792507985927


猜你喜欢
- 前言最近因为工作的需要,在写一些python脚本,总是使用print来打印信息感觉很low,所以抽空研究了一下python的logging库
- 前言Python 的一大优点就是丰富的类库,所以我们经常会用 pip 来安装各种库,所以对于Python开发用户来讲,PIP安装软件包是家常
- 本文为官方文档译文,官方文档现已非机器翻译 https://docs.microsoft.com/zh-cn/aspnet/core/fun
- 本文实例为大家分享了python3磁盘空间监控的具体代码,供大家参考,具体内容如下软硬件环境python3apscheduler前言在做频繁
- 假设我们需要从各种网页中提取全文,并且要剥离所有HTML标记。通常,默认解决方案是使用BeautifulSoup软件包中的get_text方
- 由用户指定需要扫描的盘符或目录,输入需要查找的文件或者文件夹名称(不包含中文名称)代码:# encoding=utf-8import os.
- 有个需求需要把markdown转成html模块,查询了一下刚好有这个模块安装 pip install amrkdown安装完成直接转换并保存
- 一、用 ftplib 模块连接远程服务器ftplib模块常用方法ftp登陆连接from ftplib import FTP #加
- 数据库,顾名思义,就是一个存储数据的大仓库,涵盖了多个方面的知识和应用。其优点和特性颇多,为多种编程语言的高效运行都提供了可靠又准确的信息来
- 1 JSON 文件存储JSON,全称为 JavaScript Object Notation, 也就是 JavaScript 对象标记,它通
- 一、前言如果你自己打印过东西,应该有过这种经历。如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片。比如下面这两张图
- 如下表:AggregationTableIdName1赵2钱1孙1李2周如果想得到下图的聚合结果IdName1赵孙李2钱周利用SUM、AVG
- 由于最近需要使用爬虫爬取数据进行测试,所以开始了爬虫的填坑之旅,那么首先就是先系统的学习下关于正则相关的知识啦。所以将下面正则方面的知识点做
- 以下公共方法支持列表,元组,字典,字符串。内置函数Python 包含了以下内置函数:函数描述备注len(item)计算容器中元素个数del(
- 我们首先来看下python的全部代码,大家可以直接复制后测试:#-*- encoding: utf-8 -*- import l
- 代码如下:function FSOlastline(filename) dim fso,f,temparray
- 今天在公司,经理让做一个滚动字幕。但是,不许生成gif图片。所以上网找了GIFEncoder这个类库。确实很好用,但是,应用过程中也出现了一
- 描述:使用QtDesignner设计界面,pyQt5+python3实现主体方法制作的猜数字游戏。游戏规则:先选择游戏等级:初级、中级、高级
- 读文件:#!perlopen filetxt,"/path/a.txt"; # fi
- 本文主要介绍了MySQL 8.0 驱动与阿里druid版本兼容问题解决,具体如下:注意:这个异常表面druid数据源的版本与MySql 8.