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
- 悬停时滑动输入并停留几秒钟 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在for循环中使用setTimeout 2022-01-01