惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
I
InfoQ
H
Help Net Security
GbyAI
GbyAI
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
Y
Y Combinator Blog
L
LangChain Blog
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
博客园 - Franky
D
Docker
Jina AI
Jina AI
罗磊的独立博客

博客园 - 且行且思

Win11 家庭版 远程桌面连接-突然发生身份验证错误,(错误代码: 0x800706be) — 通过添加windows凭证解决 Cesium 加载 3dtiles ,实现球体旋转、模型定位 Tomcat服务自动关闭 , 定时检查并重启 用echarts打造会转的立体饼图 BaseMetas Fileview在线文件预览解决方案 ECharts GL | 3D 地图区域高度设置 物联网智慧平台 蚂蚁地理空间数据可视化 - 基于 WebGL 的开源大规模地理空间数据可视分析引擎。 主流开源JS地图框架选择 kk-anti-reptile 是适用于基于 spring-boot 开发的分布式系统的开源反爬虫接口防刷组件。 NProgress 给 Vue 路由切换加个 “假” 进度条提升用户体验 只会 !important 改 UI? Vue 深度选择器解法 JAVA 对于class文件反编译,CFR 通常能产生最完整的代码。 用AI辅助设计登录页 免费白嫖Claude 4小技巧 Jmeter压测工具入门篇 性能工具之 JMeter 快速入门 高并发压力测试工具清单 Nginx 单机多实例负载均衡 IntelliJ IDEA 中 Shared Build Process Heap Size 的重要性与配置 微信小程序实现流式传输(打字机效果)
一个watch让页面卡成PPT?
且行且思 · 2025-11-06 · via 博客园 - 且行且思

watch使用不当,轻则内存占用飙升,重则页面卡顿、响应延迟。尤其在监听大型嵌套对象时,滥用deep: true会触发全量遍历,造成严重的性能损耗。

根本问题在于:只要对象内部任意层级的属性发生变化,无论是否相关,都会执行回调。这种“无差别监听”在高频更新场景下极易拖垮应用。


方案一:精准监听,直击目标字段

避免监听整个对象,改为追踪具体路径:

watch(
  () => state.config.user.settings.theme,
  (newTheme) => {
    applyTheme(newTheme);
  }
)

仅当目标属性变化时触发,彻底规避深度遍历开销。


方案二:借助computed收敛依赖

将需监听的多个字段聚合为一个计算状态:

const userInfo = computed(() => ({
  username: state.profile.name,
  level: state.profile.level
}))

watch(
  userInfo,
  ({ username, level }) => {
    updateBadge(username, level);
  }
)

虽然监听仍需deep,但依赖范围被严格限定,极大降低遍历成本。


方案三:多源监听,显式声明依赖

使用数组形式同时监听多个响应式路径:

watch(
  [
    () => form.data.password,
    () => form.data.confirmPassword
  ],
  ([pwd, confirm]) => {
    validatePassword(pwd, confirm);
  }
)

无需开启deep,无递归遍历,性能最优,适合关联性弱但需统一处理的字段。


总结

策略优势注意点
精准监听 零遍历,最高性能 仅适用于单一路径
computed聚合 逻辑集中,依赖明确 需配合deep,但范围可控
多源监听 语法清晰,无需deep 适合多个独立字段

核心原则:拒绝全量扫描,监听粒度越细越好。
deep: true不是银弹,盲目使用只会让应用越来越慢。