vue3 watch和watchEffect的使用以及有哪些区别


Posted in Vue.js onJanuary 26, 2021

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
 })

以上就是vue3 watch和watchEffect的使用以及有哪些区别的详细内容,更多关于vue3 watch和watchEffect的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
Vue 的 v-model用法实例
Nov 23 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
vuex的使用和简易实现
Jan 07 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 Vue.js
vue实现轮播图帧率播放
Jan 26 #Vue.js
vue 组件基础知识总结
Jan 26 #Vue.js
深入了解Vue动态组件和异步组件
Jan 26 #Vue.js
如何在 Vue 表单中处理图片
Jan 26 #Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 #Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 #Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 #Vue.js
You might like
简单的cookie计数器实现源码
2013/06/07 PHP
php session的锁和并发
2016/01/22 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
Python 文件操作实现代码
2009/10/07 Python
Python Sleep休眠函数使用简单实例
2015/02/02 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
市场营销专业毕业生自荐信
2013/11/02 职场文书
广告词串烧
2014/03/19 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
个人授权委托书格式
2014/08/30 职场文书
小学生思想品德评语
2014/12/31 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
男人帮观后感
2015/06/18 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle