watchEffect侦听器的基本使用是怎样,如何监听数据的
Admin 2022-08-11 群英技术资讯 1604 次浏览
这篇文章给大家介绍了“watchEffect侦听器的基本使用是怎样,如何监听数据的”的相关知识,讲解详细,步骤过程清晰,有一定的借鉴学习价值,因此分享给大家做个参考,感兴趣的朋友接下来一起跟随小编看看吧。其实我觉得这个玩意儿哈,不用也罢,啊哈哈哈哈哈!
怎么说呢,你可以理解成 watch 和 watchEffect 这两个玩意儿的功能是一样的。
watch:显示指定依赖源,依赖源更新时执行回调函数。watchEffect:自动收集依赖源,依赖源更新时候重新执行自身。
总结:能用 watch 就不要用 watchEffect。
首先我们写一个简单的 watchEffect 侦听器。
<template>
<div>
<h1>{{name}}</h1>
<button @click="btn">修改name</button>
</div>
</template>
<script>
import { ref, watchEffect } from "vue";
export default {
name: "App",
setup() {
const name = ref("我是????????.");
function btn() {
name.value = "????????.";
}
const res = watchEffect(() => {
console.log("watchEffect 执行了");
});
return { name, btn };
}
};
</script>
记住 watchEffect 使用也是需要先引入的,不然不好使哈,然后我们保存上面的代码,然后刷新页面看一下执行结果。
我们发现哈,我们一刷新页面,控制台直接打印了我们输出的内容,所以说呢,watchEffect 组件一加载完就会执行。
我们看到,watchEffect 使用的时候并没有设置监听哪个参数,只有一个回调函数,因为他会自动进行依赖收集,只要我们回调中使用了响应式的属性,那么这些属性在变更之后这个回调都会执行。
比如我们监听 name 的情况。
<template>
<div>
<h1>{{name}}</h1>
<button @click="btn">修改name</button>
</div>
</template>
<script>
import { ref, watchEffect } from "vue";
export default {
name: "App",
setup() {
const name = ref("我是????????.");
function btn() {
name.value = "????????.";
}
const res = watchEffect(() => {
console.log(name.value);
});
return { name, btn };
}
};
</script>
我们在回调函数打印一下 name 的值。
上面的案例是用来监听一个基本数据,如果监听一个对象呢?
其实也是一样的哈。
<template>
<div>
<h1>{{boy.age}}</h1>
<button @click="boy.age++">修改name</button>
</div>
</template>
<script>
import { ref, watchEffect, reactive } from "vue";
export default {
name: "App",
setup() {
const boy = reactive({
name: "我是????????.",
age: 10
});
const res = watchEffect(() => {
console.log(boy.age);
});
return { boy };
}
};
</script>
上边代码呢,一个按钮,每次点击让 boy 对象里面的 age 加一操作,然后监听一下 age 的新值
可以看到是完全没有问题的哈!
上边说过了哈,只要我们回调中使用了响应式的属性,那么这些属性在变更之后这个回调都会执行,不像 watch 只能监听指定的属性。
啥意思呢,简单理解一下,就是回调里面使用了的话他就执行,没用他就不执行。
就像上面的案例,修改 age 的时候,我们在回调里面打印了 age,在回调里面涉及到 age 了,他就会执行,如果我们这次不使用改变的 age,只打印一句话,看一下能不能执行回调哈。
<template>
<div>
<h1>{{boy.age}}</h1>
<button @click="boy.age++">修改name</button>
</div>
</template>
<script>
import { ref, watchEffect, reactive } from "vue";
export default {
name: "App",
setup() {
const boy = reactive({
name: "我是????????.",
age: 10
});
const res = watchEffect(() => {
console.log("执行了");
});
return { boy };
}
};
</script>
刷新保存,点击按钮修改 age 的值,看一下控制台有没有打印 执行了 三个字。
明白那句话了吗?知道什么时候执行了吧? OK。
假设,我们开始使用了 watchEffect 监听,但是我现在不想让他监听了怎么办呢?其实超级简单。
const res = watchEffect(() => {
console.log(boy.age);
});
上边我们不是创建一个 watchEffect 侦听器了吗?关闭只需要调用一下就关了哈。
res() // 关闭
下面看具体代码。
<template>
<div>
<h1>{{boy.age}}</h1>
<button @click="boy.age++">修改name</button>
</div>
</template>
<script>
import { ref, watchEffect, reactive } from "vue";
export default {
name: "App",
setup() {
const boy = reactive({
name: "我是????????.",
age: 10
});
const res = watchEffect(() => {
console.log(boy.age);
});
res() // 关闭监听
return { boy };
}
};
</script>
保存一下,点击按钮看效果。
好了,watchEffect 侦听器基本有法就这样了,没什么难的,所以说很多人都说,哎哟,这个 watchEffect 没什么屁用啊!确实用处不大,但是也不绝对哈,不然作者就不至于在 watch 之外有整一个 watchEffect 了是吧! 但是具体什么用,等你做项目过程中,就知道了!但是,能用 watch 解决的,就不要用 watchEffect !
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
JS中如何实现红绿灯效果?红绿灯是我们日常很常见的,红绿灯效果就是红灯、黄灯和绿灯循环改延时的效果,那么我们用JavaScript怎样做这样的效果呢?文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
前言在直播中,创建房间,获取房间,都需要服务器,因此需要搭建Web服务器Web服务器能处理HTTP请求的服务器都可以叫Web服务器Node.js介绍Node.js什么时候出现,2009年,Ryan Dahl(瑞恩·达尔)在GitHub上发布了最初版本的部分Node.
tab栏的实现相信大家都比较熟悉了,这篇文章给大家分享的是用JavaScript实现tab栏的方法,本文有详细的思路及代码介绍,对新手学习用JavaScript实现tab栏有一定的帮助,需要的朋友可以参考。
这篇文章我们来简单了解JavaScript数据可视化库,对于 JS 开发人员来说,可视化数据的能力与制作交互式网页一样有价值。下文给大家介绍了很多受欢迎或有趣的JavaScript数据可视化库,感兴趣的朋友就继续往下看吧。
JavaScript自定义日历实现签到功能 本文实例为大家分享了JavaScript自定义日历签到功能的具体代码,供大家参考,具体内容如下 先看下效果图 红色块为已签到的日期,样式可以随意更改,清晰明了,话不多说上代码: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String bas ...
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008