vue.js - 如何可视化vue无限更新循环的无限循环
问题描述
我们有一个相当复杂/嵌套的系统,在嵌套的 Vue 组件中使用了很多 Vuex。我经常遇到警告,[Vue warn]: You may have an infinite update loop in a component render function.
这些无限循环并不那么容易找到,并且花了我很长时间来调试。
我查看了 Vue 警告堆栈跟踪并查看了在我的代码中调用的最后一个函数,但这对我来说并不明显为什么存在无限循环或存在于何处。我假设在这些难以调试的情况下,由于我的子组件的更改,某些父组件想要重新渲染,因此子组件再次运行相同的 vuex 函数,导致父组件重新渲染等,但我永远无法追踪以确认或查看究竟是哪个函数导致父组件的哪个部分或自身重新渲染。
我想知道是否有某种方法可以可视化或看到无限循环 vue 陷入困境?我一直在尝试探索__ob__
之类的,但是有很多deps
,subs
我不明白问题出在哪里,或者在deps
and中真正要寻找什么subs
。我仍然无法理解每次发生的无限循环具体是什么。有没有办法告诉 Vue 进入无限循环,这样我就可以看到堆栈跟踪或我可以使用的其他调试方法?
解决方案
您可以在浏览器上提供完整的错误消息吗?根据我的经验,您可能需要在将模型放在子组件上之前复制数据。像数组一样,您可能希望拥有:
var arrayToChildComponent = arrayData.slice();
推荐阅读
- php - router-view 不渲染路由和组件
- c# - 使用 ActivityPrompt 从 webchat BOT Framework 4 获取自定义事件
- sql - SQL 从多个表中选择并计算第三个
- javascript - 有没有更好的方法来遍历一个大数组来查找每个项目的数量?
- php - 确认结帐并发送邮件 SMTP [OpenCart] 时出现错误消息
- ubuntu - 如何安装和配置通用映射工具 (GMT)?
- c++ - 约束类模板函数以接受特定的 POD 类型
- php - 使用来自 SQL 的数据填充 Modal(根据单击的元素修改查询)
- homekit - ESP HomeKit - 无法在某些路由器上添加附件
- zip - WinRar 通过 cli 压缩多个文件夹