javascript - 获取的存储属性在计算的页面上返回未定义

标签 javascript vue.js nuxt.js

所以我有一个商店,里面装满了发布数据,然后显示在页面上,但由于某种原因,没有定义发布变量。 这是一些代码:

组件中的异步获取

async fetch({ store, route }) {
    db.collection("posts")
      .doc(route.params.id)
      .get()
      .then(doc => {
        if (doc.exists) {
          var x = doc.data()
          x.docID = doc.id
          store.commit("modules/posts/pushPost", x)
        } else alert("No Post found")
      })
},

组件中的计算属性

 computed: {
    post() {
      var posts = this.$store.state.modules.posts.posts
      return posts.find(x => x.docID === this.$route.params.id)
    },

存储提交

pushPost(state, post) {
    state.posts.push(post)
    console.log(post)
    console.log("pushed")
  }

两个控制台都登录商店触发器并显示正确的值 但是由于某种原因,我页面中的计算后的帖子未定义

最佳答案

在这种特殊情况下,我会完全忘记 .then 回调。如果您像下面的示例那样编写代码,您肯定不会遇到未定义数据的问题,而且它的代码更简洁。

async fetch({ store, route }){
    const doc = await db.collection("posts").doc(route.params.id).get()

    if(doc.exists) {
      const x = doc.data()
      x.docID = doc.id
      store.commit("modules/posts/pushPost", x)
    } else {
      alert("No Post found")
    }
}

关于javascript - 获取的存储属性在计算的页面上返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52576752/

相关文章:

vue.js - Nuxt SSR - 我无法检查用户是否通过身份验证

javascript - 滚动时触发动画

javascript - 使用 ajax 调用进行 JSON 字符串化

Laravel 返回的错误未在前端显示

file-upload - 如何在vue js中使用Filepond并使用axios上传文件?

flask - Jinja2 和 Vuejs 绑定(bind) href 属性

vue.js - 推送路由(从 vueJS 迁移到 nuxtJS)

javascript - 如何遍历模板中的组件对象?

javascript - ReactJS - 在 fetch() 完成之前运行的明显代码

javascript - 如何计算适合div的等宽字体的字符数