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+element实现动态加载表单
Dec 13 Vue.js
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
浅谈Vue的computed计算属性
Mar 21 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
Vue深入理解插槽slot的使用
Aug 05 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 查找字符串常用函数介绍
2012/06/07 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
js树形控件脚本代码
2008/07/24 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
Vuex 入门教程
2018/01/10 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
python任务调度实例分析
2015/05/19 Python
Python实现线程池代码分享
2015/06/21 Python
Python类的动态修改的实例方法
2017/03/24 Python
python中requests和https使用简单示例
2018/01/18 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
员工团队活动方案
2014/08/28 职场文书
晚会开幕词
2015/01/28 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
Golang入门之计时器
2022/05/04 Golang
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL