当前位置: 首页 > 知识库问答 >
问题:

vue3控制台警告问题?

夹谷阳夏
2023-06-27

为什么控制台会疯狂打印,抛出这个警告?

Maximum recursive updates exceeded in component <ElFormItem>. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function
watch(printInfoList.value, (newVal) => {
  isComplete = true
  newAttr = ''
  for (let index = 0; index < newVal.length; index++) {
    setGoodsAttr(newVal[index])
  }
// 好像是因为这段代码
  emits("update:attrInfo", {
    goodsAttr,
    isComplete,
    oldAttr,
    newAttr
  });
}, true)

共有3个答案

松茂实
2023-06-27
for (let index = 0; index < newVal.length; index++) {
    setGoodsAttr(newVal[index])
  }

问题在于你深度监听了printInfoList.value, 并且在监听回调中直接修改了你要监听的值.从console来看, printInfoList的length 为101, 即你每改动一项, 上一个for循环可能还未结束又因为改动触发监听开启了下一个for循环.
解决办法的话, 从方法名推测,设置商品属性.监听数组变动自动添加.把设置值这个过程从监听里移除,放进你会导致数组长度变动的操作逻辑里面就好了.

庾君博
2023-06-27

首先我把这个提示大致翻译下(英语不是很好,请见谅):
某个组件中超过了最大递归更新。这意味着你有一个效果正在起反应,但是它正在改变自己的依赖关系,从而自己也触发了。

从我别扭的翻译中其实可以大致猜到,这个叫做<ElFormItem>的组件的响应式变量被自身依赖,同时又被其它变量所依赖,出现无限死循环更新导致控制台疯狂打印的情况。

要避免这种情况,需要尽量减少响应式变量之间的相互依赖关系,确保一个变量不会依赖于自身或者间接依赖于自身。对于组件内部的响应式变量,可以使用computed属性来控制它的行为,这样可以依赖其他变量计算得到,不会自身递归循环。

蔚宏大
2023-06-27

一般来说带有 Maximum 这样的问题都是自己业务代码的问题。
要么就是短时间内更新了多次,要么就是业务代码有问题出现死循环了。

 类似资料:
  • 我刚刚更新了我的React-Native应用程序,当我试图制作另一个内测版时,在谷歌游戏控制台收到了这条错误消息。 未知验证VALIDATE_APP_MESSAGE_NO_APKS 最新的版本上传没有问题,这个版本只有很少的变化。毫无疑问。很抱歉提供这么少的信息。 有人在Google Play Console上上传最新更新的应用程序时遇到过这个错误消息吗?

  • vue3 新的 defineModel parent: <Input v-model:p_input="test_input" /> son: <el-input v-model="myInput" placeholder="Please input" /> 报警告: Extraneous non-emits event listeners (refresh) were passed to com

  • 在我的浏览器控制台中获取警告:

  • 我的笔记本电脑硬盘出现故障,我不得不在新硬盘上重新安装IntelliJ和windows。在我的旧驱动器中,我能够在控制台中打印(system.out.println)外语,没有任何问题,但在重新安装后,我的控制台无法识别文本,我得到了这样的输出 我不认为这是因为我的源代码中有任何错误,是否有任何方法可以配置我的IDE以能够识别此文本(在本例中为泰米尔语,但我需要支持大量语言) 提前谢谢你,苏马尔。

  • 我有一个模板,我需要知道提供的变量的长度。。。 它吐出了正确的信息,似乎工作得很好,但它给出了以下警告: [Vue warn]:计算表达式{input_prefix:(prefix.length)时出错 我真的很想把它做好,摆脱警告。有什么想法吗? 向约翰·拉杰问好

  • 我正在android应用程序中使用firebase。几天后,firebase突然停止向主firebase控制台报告崩溃。我得到以下错误每当任何崩溃发生在应用程序。 我的分级文件如下所示 我已经尝试更新api密钥,但我没有得到任何更新它。提前致谢