How to determine what causes components to rerender(如何确定导致组件重新呈现的原因)
本文介绍了如何确定导致组件重新呈现的原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我遇到一个问题,当我更改应用程序中的组件时,许多不相关的组件似乎也会重新呈现。当我使用Vue Performance Timmings配置时,我看到如下内容(全部在大约200ms的跨度内)
我正在尝试找出导致这些组件重新呈现的原因。我看到了关于如何判断重现原因的tip,但当我将此代码段*放入所有重现组件中时,我没有得到任何记录到控制台的内容。
那么,我如何才能找到导致所有这些组件重新呈现的原因?
*我实际放入的代码如下
public mounted() {
let oldData = JSON.parse(JSON.stringify(this.$data));
this.$watch(() => this.$data, (newData) => {
console.log(diff(oldData, newData));
oldData = JSON.parse(JSON.stringify(newData));
}, {
deep: true,
});
}
推荐答案
使用Chrome中的F12开发工具,您可以跟踪触发组件重新呈现的原因。将更新的挂钩添加到组件,如下所示:
updated() {
if (!this.updateCnt)
this.updateCnt = 1;
if (this.updateCnt > 1) { // set to desired
debugger;
}
console.log(`Updated ${this.updateCnt++} times`);
}
}
在打开F12工具的情况下在Chrome中刷新页面,并等待命中断点。在Sources选项卡中,您将在右侧看到调用堆栈,并将更新()函数作为当前堆栈帧。回顾调用堆栈,最终您应该会看到导致更新触发的代码。在我的例子中,它是VUE运行时中的reactive veSetter(),它是由我在父组件中设置属性触发的。
上面的代码仅在组件自身的状态更改时才会触发,而不是父级。
这篇关于如何确定导致组件重新呈现的原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:如何确定导致组件重新呈现的原因
基础教程推荐
猜你喜欢
- 从快速中间件中排除路由 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
