无论如何在Vuejs中找到无限观看循环

时间:2018-08-18 11:59:25

标签: vue.js vuejs2 vuex

因此,我正在开发一个大型VueJS应用程序,但不知何故我犯了一个大错误。我将手表放在吸气剂上,然后将手表中的一个称为操作的动作称为状态,将其称为吸气剂。因此,我陷入了无限循环。一段时间以来,我的应用程序运行良好,但是在其他组件中,我再次在该吸气器上放了一块手表,并在其中放了一条日志,然后我看到chrome控制台充满控制台消息。然后我固定了观察者。

我正在寻找一种方法来查找Vue应用程序中是否还有其他无限监视循环。由于我无法去登录其他所有观察者。有很多。

1 个答案:

答案 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标签查看通用性能工具: