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

Vue.js 3 + TypeScript从API取数后模板空白无显示求助

问题解决:Vue3+TS模板渲染API数据空白

你的问题出在初始渲染时datas是空数组,直接访问datas[0].image会触发报错,导致Vue无法正常渲染页面。

原因分析

组件挂载完成前,datas的初始值是空数组[],模板里直接写datas[0].image相当于访问undefined.image,会抛出Cannot read properties of undefined (reading 'image')的错误。Vue遇到这类致命渲染错误会停止页面渲染,所以你看到空白页面——尽管后续onMounted里成功请求到了数据,但初始渲染的报错已经阻断了后续更新流程。

解决方案

有几种简单直接的修复方式:

1. 使用可选链操作符(推荐)

在模板里给属性访问加上?.,避免访问undefined的属性:

<template>
    <div>
        <img :src="datas[0]?.image">
    </div>
</template>

?.会在datas[0]为undefined时直接返回undefined,不会触发报错,等数据请求完成后,datas[0]有值时就会正常加载图片。

2. 添加v-if判断,确保数据存在再渲染

先判断datas[0]是否存在,再渲染图片节点:

<template>
    <div>
        <img v-if="datas[0]" :src="datas[0].image">
    </div>
</template>

初始状态下datas[0]不存在,图片不会被渲染,避免报错;数据加载完成后,datas[0]有值,图片自动显示。

3. 设置初始默认值(适合需要占位的场景)

给datas设置包含默认对象的初始值,避免初始时出现undefined:

const datas = ref<datasInterface[]>([{
    id: 0,
    title: '',
    price: 0,
    description: '',
    category: '',
    image: '', // 可以填入一张占位图地址
    rating: {
        rate: 0,
        count: 0
    }
}])

另外,排查Vue渲染问题时,优先打开浏览器控制台(F12)查看报错信息,你现在打开应该能看到上述的undefined访问错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:40:34