如何检查Vue中触发了哪些数据更新?

时间:2018-11-30 17:16:09

标签: vuejs2

updated: function() {
    console.log("updated");
    this.$emit("render-vue", this.$el.offsetHeight);
  },

这足够好...但是在我的应用中,props得到更新(我不在乎),然后有一个fetch()更新了data,导致其他DOM呈现。

所以,这意味着我连续获得了 2 个“更新”事件!

基本上,我只希望updated$emit被完全更新并且DOM完成之后执行data

当前,$emit连续发生2次,这无济于事-IT DOM更新为props,然后在{{1} }在updated之后更新。

现在,我可以data-尝试了。问题在于,fetch()将在所有DOM watch之前触发,从而以 argument的形式发送错误的信息。

这几乎就像我需要$emit的特定部分updated ...然后,只有这样,watch才发送data

对于其他上下文,没有 children -这是一个 child 组件。

我可以可能使用updated使它正常工作...但是,拜托!太草率了!

1 个答案:

答案 0 :(得分:1)

在获取数据的代码块中,设置一个属性以指示有新数据可用

fetch(url)
    .then(() => {
        // whatever you're doing with the data
        this.newData = true;
    });

updated钩子中检查此状态变量

updated() {
    if (this.newData) {
        this.$emit("render-vue", this.$el.offsetHeight);
        this.newData = false;
    }
}