You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VUEX中Getter返回对象可正常查看但读取属性报undefined如何解决

报错原因

你的state.id初始值为空字符串,组件首次渲染时,obtenerArticuloPorId这个getter执行find操作找不到匹配的商品,会返回undefined,此时直接访问.nombre就会触发读取undefined属性的报错。
后续你触发obtenerId给state.id赋值后,getter才会返回正确的商品对象,但首次渲染的报错已经触发了。
而直接输出{{obtenerArticuloPorId}}不会报错,是因为模板渲染undefined时只会显示为空,不会触发属性读取错误。

解决方案

方法1:使用可选链操作符(推荐,Vue 3 原生支持)

直接在模板里加可选链,避免读取undefined的属性:

{{ obtenerArticuloPorId?.nombre }}

如果用Vue2,需要先配置babel插件支持可选链语法。

方法2:增加条件渲染

用v-if判断商品对象存在后再渲染属性:

<template>
   <div class="popup" v-if="obtenerArticuloPorId">
       {{ obtenerArticuloPorId.nombre }}
   </div>
</template>

方法3:给Getter添加默认返回值

修改store里的getter,找不到商品时返回空对象,避免返回undefined:

getters: {
  obtenerArticuloPorId(state){
      const articulo=state.articulos.find(art=> art.id===state.id)
      return articulo || {}
  }
}

内容的提问来源于stack exchange,提问作者Inca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:06:01