Vue.js报错-Maximum-recursive-updates-exceeded
Vue.js 报错Maximum recursive updates exceeded in component一句话总结用「watch computed nextTick」三件套让响应式更新不再无限递归警告瞬间消失正文目录报错含义Vue 在警告什么「递归更新」5 大高频翻车场景 修复代码万能兜底watch、computed、nextTick预防 checklist不再踩坑一句话总结一、报错含义Vue 在警告什么「递归更新」当你在控制台看到Maximum recursive updates exceeded in component xxx. This means you have a reactive effect that is mutating its own dependency and recursively triggering itself.Vue 在告诉你「你的响应式逻辑形成了无限循环 —— A 修改了 BB 变化又触发修改 AA 又修改 B……死循环了」Vue 内置了递归保护机制当同一个组件的渲染函数被递归触发超过 100 次时就会抛出此警告并停止更新。本质响应式依赖形成了循环引用。二、5 大高频翻车场景 修复代码① watch 修改了被监听的数据 —— 自我递归script setup import { ref, watch } from vue; const count ref(0); // ❌ watch 修改了被监听的 countcount 变化又触发 watch watch(count, (newVal) { count.value newVal 1; // ❌ 死循环 }); /script修复用中间变量或条件退出script setup import { ref, watch } from vue; const count ref(0); // ✅ 加退出条件避免无限递归 watch(count, (newVal) { if (newVal 10) return; // ✅ 有上限 count.value newVal 1; }); /script② computed 里修改了依赖的响应式数据script setup import { ref, computed } from vue; const price ref(100); const count ref(2); // ❌ computed 中修改了依赖的 price const total computed(() { price.value price.value 10; // ❌ 修改依赖 → 死循环 return price.value * count.value; }); /script修复computed 只读不修改依赖script setup import { ref, computed } from vue; const price ref(100); const count ref(2); // ✅ computed 只做计算不修改依赖 const total computed(() price.value * count.value); // ✅ 需要修改 price用 watch 或事件 function updatePrice() { price.value 10; } /script③ 模板中绑定了互相依赖的数据script setup import { ref, computed } from vue; const firstName ref(张); const lastName ref(三); // ❌ fullName 依赖 firstNamefirstName 又依赖 fullName const fullName computed(() { firstName.value fullName.value; // ❌ 互相依赖 return firstName.value lastName.value; }); /script修复单向数据流避免互相依赖script setup import { ref, computed } from vue; const firstName ref(张); const lastName ref(三); // ✅ 单向依赖fullName 依赖 firstName但 firstName 不依赖 fullName const fullName computed(() firstName.value lastName.value); // ✅ 需要反向更新用 watch watch(fullName, (val) { // 单独处理 }); /script④ watch 监听 computed又在回调中修改 computed 的源数据script setup import { ref, computed, watch } from vue; const list ref([1, 2, 3]); // ❌ doubleList 依赖 listwatch 修改 list → doubleList 变化 → watch 触发 const doubleList computed(() list.value.map(i i * 2)); watch(doubleList, () { list.value.push(list.value.length 1); // ❌ 修改源数据 → 死循环 }); /script修复监听不同数据源或用 once 标志script setup import { ref, computed, watch } from vue; const list ref([1, 2, 3]); const doubleList computed(() list.value.map(i i * 2)); // ✅ 监听 doubleList 的长度而非内容或加条件 watch(() doubleList.value.length, (newLen, oldLen) { if (newLen oldLen) return; // ✅ 避免无意义触发 // 只在真正需要时更新 }); /script⑤ 组件 props 和 emit 形成循环!-- 父组件 -- script setup import { ref } from vue; import Child from ./Child.vue; const value ref(); const handleUpdate (val) { value.value val.toUpperCase(); // ❌ 转换后又传给子组件 → 子组件 emit → 再传回 }; /script template Child :modelValuevalue update:modelValuehandleUpdate / /template!-- 子组件 -- script setup const props defineProps([modelValue]); const emit defineEmits([update:modelValue]); // ❌ watch props 变化后立即 emit父组件又修改 → 循环 watch(() props.modelValue, (val) { emit(update:modelValue, val.toLowerCase()); // ❌ 死循环 }); /script修复子组件不做反向转换或用 computed 只读!-- 子组件修复版 -- script setup import { computed } from vue; const props defineProps([modelValue]); const emit defineEmits([update:modelValue]); // ✅ 用 computed 展示转换后的值不 emit 回去 const displayValue computed(() props.modelValue.toLowerCase()); // ✅ 只在用户输入时 emit function handleInput(e) { emit(update:modelValue, e.target.value); } /script三、万能兜底watch、computed、nextTick场景工具示例需要修改被监听的数据watch 条件退出if (val 10) return;需要派生数据computed只读computed(() a b)需要延迟更新nextTicknextTick(() { ... })需要批量更新watch flush:‘post’watch(src, fn, { flush: post })万能模板script setup import { ref, watch, nextTick } from vue; const data ref(null); // ✅ 万能模板条件退出 nextTick 延迟 watch(data, async (newVal) { if (!newVal) return; // ✅ 条件退出 await nextTick(); // ✅ 延迟到 DOM 更新后 // 安全地修改数据 }); /script四、预防 checklistwatch 回调绝不直接修改被监听的源数据computed只做计算不产生副作用响应式数据之间避免互相依赖A 依赖 BB 又依赖 Awatch 监听 computed 时不在回调中修改 computed 的源数据父子组件 props/emit不做双向转换控制台「Maximum recursive updates」 立即检查响应式依赖链是否有环五、一句话总结「Maximum recursive updates exceeded」 响应式依赖形成了循环引用。用「watch 条件退出 computed 只读」三件套让响应式更新不再无限递归警告瞬间消失最后问候亲爱的朋友们并邀请你们阅读我的全新著作 《Vue.js 3企业级项目开发实战微课视频版》

相关新闻

From Pixar-Themed Sets to a Myst

From Pixar-Themed Sets to a Myst

迪士尼Lorcana背靠整个迪士尼角色库,在集换式卡牌游戏中拥有独特优势。外媒IGN近日整理了Ravensburger已公布的2026年产品计划,从年初的冬季系列到10月的《寻梦环游记》扩展,路线图逐渐清晰,但下半年仍有待填补的空白。 【Winter…

2026/10/17 8:05:45 阅读更多 →
Nuxt4阶段六:工程化与进阶 —— 模块、中间件、插件、TS 与测试

Nuxt4阶段六:工程化与进阶 —— 模块、中间件、插件、TS 与测试

Nuxt4阶段六:工程化与进阶 —— 模块、中间件、插件、TS 与测试 学习目标:会用 Nuxt Modules、路由中间件、插件;理解 Nuxt 4 TypeScript 分层;能写基础测试与统一错误处理。 预计时间:1–2 周 前置:完成阶…

2026/10/16 13:25:56 阅读更多 →
你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生

你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生

在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求。因为这样最简单。 其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监听,接收到…

2026/10/16 15:48:27 阅读更多 →

最新新闻

从AI生成到实体印刷:artcraft工作流让文创落地不再难

从AI生成到实体印刷:artcraft工作流让文创落地不再难

如果你是那种喜欢用 AI 生成图片,但又不想让成果只停留在屏幕里的人,artcraft 这个名字你应该会喜欢。说白了,它把“AI 生成”和“手作 / 小批量印刷”这两件原本很割裂的事,硬生生捏成了一条能跑通的流水线。这年头,类…

2026/10/17 8:05:16 阅读更多 →
JDK 1.8u45 安装与校验:遗留系统兼容性实战指南

JDK 1.8u45 安装与校验:遗留系统兼容性实战指南

简介:本资源为Oracle官方发布的JDK 1.8.0_45 64位Linux平台标准开发套件(jdk-8u45-linux-x64.tar.gz),专为Linux环境下Java中高级开发者、运维工程师及教学实验人员设计,用于搭建稳定、合规的Java 8开发与运行环境。压…

2026/10/17 8:05:16 阅读更多 →
Flutter入门状态管理实战:StatefulWidget + setState 从交互到异步

Flutter入门状态管理实战:StatefulWidget + setState 从交互到异步

1. 为什么第三篇才敢聊状态管理前两篇我们搞定了环境搭建、Dart 语法扫盲、Widget 基础概念和第一个静态页面,当时还兴冲冲地写了个只有文字和图片的界面,运行起来那一刻确实挺爽。但爽完之后会发现一个问题:这个页面是死的。点击按钮没反应&…

2026/10/17 8:05:16 阅读更多 →
分类算法与关联规则挖掘:从原理到实战的完整指南

分类算法与关联规则挖掘:从原理到实战的完整指南

分类算法与关联规则挖掘这组主题,算是数据挖掘里最经典的一对搭档。一个负责预测——拿到一条数据判断它属于哪个类别;一个负责发现——从大量记录中找出频繁出现的组合模式。两者覆盖了从监督学习到无监督挖掘的核心思路,无论做推荐系统、风…

2026/10/17 8:05:16 阅读更多 →
AI辅助毕业论文全流程指南:从选题、文献综述到降重答辩的工具选择与实操方法

AI辅助毕业论文全流程指南:从选题、文献综述到降重答辩的工具选择与实操方法

毕业论文这东西,几乎每个本科生和研究生都要啃一遍。过去两年,AI论文写作软件已经从“能不能用”进化到了“怎么用得优雅”:能理解学术语境、能生成参考文献条目、能按模板排版,甚至能帮你对着导师的意见逐条修改。我帮不少师弟师…

2026/10/17 8:05:16 阅读更多 →
改进型永磁同步电机DTC仿真模型:滞环与SVPWM转矩脉动抑制对比

改进型永磁同步电机DTC仿真模型:滞环与SVPWM转矩脉动抑制对比

简介:一套面向电机控制研究人员与电气工程专业学生的永磁同步电机(PMSM)直接转矩控制(DTC)改进版Simulink仿真模型,涵盖从电机本体、转矩磁链估算到滞环控制器与逆变器开关逻辑的完整闭环结构。压缩包共包含…

2026/10/17 8:04:16 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →