首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义类型记录错误:无法读取未定义属性

未定义类型记录错误:无法读取未定义属性
EN

Stack Overflow用户
提问于 2022-08-17 21:22:01
回答 1查看 106关注 0票数 0

错误消息

当前使用

我在vue中使用类型记录,其中vue项目是使用cli创建的。

问题

我正在尝试读取从firebase实时数据库检索到的对象中的字符串,但在控制台中显示类型错误。

情况

目前,我正在导航栏上工作,试图使文本无错误地显示出来。为此,我将我的所有文本数据存储在一个防火墙实时数据库中。

我有一个本地vuex状态,它应该存储文本数据,一个getter用来检索它,然后一个mutator同步请求从数据库获取数据,并以文本数据的形式存储它。

在我的App.vue文件中,我调用mutator同步请求从数据库获取文本数据并将其存储在状态中。

然后,在我的navigation.vue文件中,我调用文本数据getter,以获取文本数据对象,然后引用我想要的文本。

这很奇怪,因为如果我使用一个按钮来运行一个返回调用文本项'Home‘状态的结果的方法,它将显示正确的字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 02:09:59

@Dylan模板是在设置getter之前呈现的(这是正常的)。控制台中的错误消息指向问题,它试图读取未定义的.navigation。因此,它基本上是试图读取$store.getters.getTextualData.header.navigation...,但在初始加载时,header还不存在(未定义为错误提及)。

我倾向于解决这个问题,我希望有一个计算属性,一旦字符串可用就返回它,例如

代码语言:javascript
运行
复制
computed: {
  homeButtonText() {
    return $store.getters.getTextualData?.header?.navigation.text.buttons.home
  }
}

它将返回未定义的,直到设置好为止。或者,您也可以返回默认设置。

代码语言:javascript
运行
复制
computed: {
  homeButtonText() {
    return $store.getters.getTextualData?.header?.navigation.text.buttons.home || 'Home'
  }
}

方法返回正确值的原因是getter有时间设置,因此文本存在。模板呈现很早就会发生。一篇好的文章和图表可以找到这里

在您的模板中,您可以按以下方式更新它,

代码语言:javascript
运行
复制
<router-link class="nav__a" to="/">
  {{ homeButtonText }}
</router-link>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73395024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档