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组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
vue 实现图片懒加载功能
Dec 31 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue前端工程的搭建
Mar 31 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
Vue操作Storage本地化存储
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
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
Python有序字典简单实现方法示例
2017/09/28 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
如何在python中判断变量的类型
2020/07/29 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
SQL Server面试题
2013/04/04 面试题
座谈会主持词
2014/03/20 职场文书
党风廉政建设责任书
2014/04/14 职场文书
挂靠协议书范本
2014/04/22 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
学校工作推荐信范文
2014/07/11 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
小班上学期个人总结
2015/02/12 职场文书
python如何读取.mtx文件
2021/04/22 Python
防止web项目中的SQL注入
2021/12/06 MySQL