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

Vue中v-for循环无法获取数组数据,如何解决shows未定义警告?

解决Vue Script Setup中v-for渲染shows数组时的未定义警告

问题说明

使用Vue的<script setup>语法定义了响应式数组shows,但在模板中用v-for循环渲染时,触发警告:[Vue warn]: Property "shows" was accessed during render but is not defined on instance.。此前尝试在传统data()方法中声明数据,因语法不匹配未生效。

解决方案

1. 导入ref响应式API

在<script setup>中使用ref必须先从vue包导入,否则定义的变量无法被模板识别为响应式数据。

2. 启用模板中的循环代码

当前模板里的循环渲染代码处于注释状态,需要取消注释,并移除硬编码的静态内容。

完整代码示例

模板代码

<template>
  <div class="md:flex justify-center">
    <div class="md:flex gap-10">
      <!--  Calendar -->
      <div id="vanilla-calendar"></div>

      <!-- Day Details -->
      <!-- 循环渲染shows列表 -->
      <div class="roll-box">
        <div
          class="show-column"
          v-for="(show, index) in shows"
          :key="index"
        >
          <div class="circle-bg">
            <div class="date">{{ show.date }}</div>
            <div class="month">{{ show.month }}</div>
          </div>

          <div class="show show-box">
            <div class="show-name">
              {{ show.showName }}
            </div>
            <div class="show-desc">{{ show.showDesc }}</div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

脚本代码

import { ref } from 'vue';

const shows = ref([
  {
    date: "15",
    month: "JUN",
    showName: "Piano Duo Recital by Lucas & Arthur Jussen",
    showDesc: "Hong Kong Museum of Art",
  },
  // 可添加更多演出数据
]);

关键说明

  • <script setup>中声明的变量会自动暴露给模板,但前提是使用Vue提供的响应式API(如ref、reactive)且正确导入。
  • 若未导入ref,shows只是普通JavaScript变量,无法被模板识别,就会触发“未定义”警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:11:18