当前位置: 首页 > 知识库问答 >
问题:

Vuex-在计算中使用getter时得到一个未定义的错误

孟和玉
2023-03-14

我的vue js网站上的数据正在渲染,但控制台中出现了一个未定义的错误。我正在应用程序中进行axios呼叫。vue从我的cms获取数据:

一个pp.vue

async created() {

const strapiData = await getStrapiData();

// Update Vuex
this.$store.dispatch('setStrapi', strapiData);

}

然后在我的一个组件中,我调用getter来检索存储在vuex中的数据:

关于vue

computed: {
    aboutData() {
        return this.$store.getters.strapiData.data.about
    }
}

然后在我的模板代码中引用:

<img :src="aboutData.photo.name">

一切都呈现良好,但这是我在web控制台中看到的错误:

TypeError: Cannot read property 'photo' of undefined
at a.r (About.vue?3e5e:1)

我认为这个问题与我的组件的创建顺序有关。我正在将所有子组件导入应用程序。vue在那里渲染它们,但我认为子组件是在创建应用程序的生命周期挂钩之前创建的。vue:

应用程序。vue脚本

components: {
'app-about' : About,

应用程序。vue模板

<template>
  <div id="app">
    <app-about></app-about>
  </div>
</template>

有人知道我错过了什么吗?非常感谢。

共有1个答案

秦鹏飞
2023-03-14

第一次创建组件时,axios调用尚未解析,因此未定义aboutData。调用解决后,将立即呈现aboutData。未定义和渲染是两个后续事件。使用v-if可消除第一个事件,因为创建组件时不会调用aboutData,只有在axios调用已解决且aboutData可用时才会调用。

您通常要做的是设置一个属性加载,默认为false。然后,在axios调用启动时将加载设置为true,在解析时将加载设置为false。在您的模板中,您设置了一些“加载消息”来显示加载为真。

 类似资料:
  • 1. 前言 本小节我们将介绍 Vuex 中 getter 的使用方式。包括如何定义 getter、使用 getter、辅助函数 mapGetters 的使用。Getter 在项目中的使用非常普通,学会使用 Getter 可以避免我们重复的通过 state 获取数据。同学们在学完本小节后可以多尝试写一些 Getter 来巩固本节的知识点。 2. 慕课解释 Vuex 允许我们在 store 中定义 “

  • 我试图将util模块对象传递给puppeteer,但没有成功。我知道这个问题是在如何将所需的模块对象传递给puppeteer page.evaluate中提出的,但提供的解决方案在我的情况下不起作用。MWE: 显示错误: UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):错误:计算失败:ReferenceError:未定义util 谢谢 在初始行中

  • 我用的是reactjs。我正在使用material表获取可编辑表中的数据。但是我得到了一个像图片一样的错误,我怎样才能修复这个错误呢? 我使用useState进行表格的编辑设置。你能帮我纠正一下错误吗? 我在接收数据时没有收到任何错误。我只是在表格上使用活动/非活动编辑。但是 为行提供错误。 下面是错误截图和我的源代码

  • 我正在与Angular 2和lodash合作。 我有一个关系模型,我有一个这样的获取器: 将relationsPerType的值绑定到*ngFor指令 编辑:这是我的绑定: 给我以下错误: 表达式 'Message.relationsPerType in MessagesDetailsComponent@60:8' 在检查后已更改。以前 这看起来是完全正确的,因为每次调用它时都要进行计算。 无论如

  • 我只是创建了一个new-project,即使对于新项目,它也会给出如下注释的错误: 生命周期配置不包括的插件执行:org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(执行:default-compile,phase:compile) 生命周期配置不包括的插件执行:org.apache.maven.plugins:maven-reso

  • 我想做一个简单的Vuex应用程序,这里是我的文件: main.js 应用程序。vue 此外,我正在使用vue路由器: 在初始化主存储之后。js和应用程序中的注入。vue组件对此进行了测试$在应用程序中存储变量。vue未定义;但同时在主要方面。一切都好。 还试图从商店A导入pp.vue(后来我在商店中存储商店/index.js)制作新的商店,而不改变状态main.js.