【问题标题】:DOM is rendering before Firebase is completeDOM 在 Firebase 完成之前渲染
【发布时间】:2019-09-14 04:34:08
【问题描述】:

我正在从 Firebase 获取一些数据以显示在我的网页上。正确加载文本时,我的控制台中不断出现错误,提示我正在加载未定义的变量。这很重要,因为我最终希望能够添加编辑功能。我确定 Firebase 调用是在加载 DOM 后呈现的,并且数据最初设置为 null。

我尝试使用不同的生命周期挂钩,但没有一个会等到 Firebase 调用完成。我对 Javascript 没有那么丰富的经验,所以我可能会遗漏一些简单的东西。

created(){
    db.collection('recipes').doc("Grilled Cheese").get()
        .then((doc) => {
            this.contentData = doc.data();
        })
}

data() {
    return {
        sidebarData: null,
        contentData: "",
    }
},

我想在 DOM 完全呈现之前用正确的值填充 contentData。

【问题讨论】:

  • 只有在获得需要的数据后才能渲染它。为此使用指令v-if="someData"

标签: firebase vue.js google-cloud-firestore


【解决方案1】:

知道您不能在创建的挂钩结束后强制执行挂载的挂钩(DOM 渲染不会等待您的 firebase 响应)...您需要在模板上添加条件 v-if 所以只有如果数据可用(不是undefined),DOM 将被渲染。

<template v-if="contentData">...</template>

注意: null"" 是已定义的数据,不会导致任何渲染问题...确保 doc.data() 不是 undefined

【讨论】:

  • 所以这修复了显示的错误,但没有解决问题。我想我需要在下次提问之前扩展问题
猜你喜欢
  • 2014-05-07
  • 1970-01-01
  • 2018-04-21
  • 2018-09-19
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2016-09-12
  • 2016-04-17
相关资源
最近更新 更多