Vue3这个API慎用!可能会有性能问题!
2024-01-04 09:32:48 软件 277观看
摘要大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~背景Vue3 有一个 API,可能很多人都用过,那就是 watchEffect,他的功能跟 watch 有点类似,但又有些不一样,用法如下,它会去自动收集

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~Pof28资讯网——每日最新资讯28at.com

背景

Vue3 有一个 API,可能很多人都用过,那就是 watchEffect,他的功能跟 watch 有点类似,但又有些不一样,用法如下,它会去自动收集依赖的响应式数据,响应式数据一变,就会触发函数的重新执行Pof28资讯网——每日最新资讯28at.com

图片图片Pof28资讯网——每日最新资讯28at.com

谨慎使用!

我发现组员们很喜欢用watchEffect,他们的意思是watchEffect比较方便,写起来比较爽Pof28资讯网——每日最新资讯28at.com

其实我个人是很少用 watchEffect 的,因为我感觉:Pof28资讯网——每日最新资讯28at.com

  • watchEffect 的依赖不够明确
  • watchEffect 可能有性能问题

可维护性较差

先来说第一点,我举个例子,假如我要监听 a、b、c,然后去执行很多逻辑,如果我是使用 watch,我一眼就能看到,依赖项是 a、b、c 这三个变量,后面接手代码的开发者,也能很明确看到执行这些逻辑的依赖项是什么Pof28资讯网——每日最新资讯28at.com

图片图片Pof28资讯网——每日最新资讯28at.com

但是如果你使用的是 watchEffect,那么你下次看代码时,你得去这么多逻辑中去自己一个一个找依赖项是什么,是不是感觉代码可维护性变得比较差了?Pof28资讯网——每日最新资讯28at.com

图片图片Pof28资讯网——每日最新资讯28at.com

性能问题?

再来说说 watchEffect 可能有性能问题,我们看以下例子Pof28资讯网——每日最新资讯28at.com

图片图片Pof28资讯网——每日最新资讯28at.com

其实 isEven 自始至终都是 true,所以应该只执行一次函数就行了,但是 watchEffect 没有做惰性处理,也就是只要 isEven.value 被重新赋值,函数就会重新执行一遍,无论 isEven 是否变了,这就会造成无意义的代码执行~Pof28资讯网——每日最新资讯28at.com

但是如果是用 watch 就不会有这种情况发生Pof28资讯网——每日最新资讯28at.com


Pof28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-57375-0.htmlVue3这个API慎用!可能会有性能问题!

声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。

显示全文

上一篇:关于FastAPI中在新线程里调用协成函数问题

下一篇:突破 Pytorch 核心点,损失函数 !!!

最新热点