因此,我正在开发一个大型VueJS应用程序,但不知何故我犯了一个大错误。我将手表放在吸气剂上,然后将手表中的一个称为操作的动作称为状态,将其称为吸气剂。因此,我陷入了无限循环。一段时间以来,我的应用程序运行良好,但是在其他组件中,我再次在该吸气器上放了一块手表,并在其中放了一条日志,然后我看到chrome控制台充满控制台消息。然后我固定了观察者。
我正在寻找一种方法来查找Vue应用程序中是否还有其他无限监视循环。由于我无法去登录其他所有观察者。有很多。
答案 0 :(得分:0)
您可以使用global mixin以编程方式将日志记录到每个观察程序中。可以使用以下代码来实现:
Vue.mixin({
beforeCreate() {
if (this.$options.watch) {
Object.entries(this.$options.watch).forEach(([watcherKey, func]) => {
this.$options.watch[watcherKey] = new Proxy(func, {
apply(target, thisArg) {
console.log(`Called watcher ${target.name} on component ${thisArg.$options.name}`);
},
});
});
}
},
});
此代码挂接到全局Vue实例,对于每个组件,在创建组件之前,它会通过所有观察程序函数枚举并将其包装在proxy中。每当调用观察者时,代理都会实现apply
trap来登录控制台。
如果过于细微,您可以使用Vue Performance Devtool或Chrome Dev Tools中的Performance标签查看通用性能工具: