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

Vue.js中如何使用v-for渲染词典API返回的复杂嵌套对象

Vue 嵌套层级释义渲染实现方案

1. 确认对应数据结构

首先对齐你提到的嵌套层级,示例结构参考如下:

// 接口返回的完整结构参考
apiResponse = {
  data: {
    // 其他字段如单词、音标等
    meanings: [
      {
        // 其他字段如词性
        definitions: [
          { definition: '释义1' },
          { definition: '释义2' }
          // 更多释义条目
        ]
      }
      // 更多meaning条目(通常对应不同词性)
    ]
  }
}

2. 模板渲染代码

用两层嵌套v-for即可完成所有释义遍历,示例模板如下:

<template>
  <div class="dictionary-content">
    <!-- 第一层遍历所有meanings -->
    <div 
      v-for="(meaning, meaningIdx) in apiResponse.data.meanings" 
      :key="meaningIdx"
      class="meaning-block"
    >
      <!-- 可选:展示词性等meaning下的其他字段 -->
      <p class="part-of-speech">*{{ meaning.partOfSpeech }}*</p>
      <ul class="definition-list">
        <!-- 第二层遍历当前meaning下的所有释义条目 -->
        <li 
          v-for="(defItem, defIdx) in meaning.definitions" 
          :key="`${meaningIdx}-${defIdx}`"
          class="definition-item"
        >
          {{ defItem.definition }}
          <!-- 有其他字段如例句、同义词可直接在此处追加渲染 -->
        </li>
      </ul>
    </div>
  </div>
</template>

3. 响应式数据赋值示例

Vue 3 写法

<script setup>
import { ref, onMounted } from 'vue'

const apiResponse = ref({})

onMounted(async () => {
  // 替换为你的词典API调用逻辑
  const res = await fetch('你的词典API请求地址').then(res => res.json())
  apiResponse.value = res
})
</script>

Vue 2 写法

export default {
  data() {
    return {
      apiResponse: {}
    }
  },
  async mounted() {
    // 替换为你的词典API调用逻辑
    const res = await fetch('你的词典API请求地址').then(res => res.json())
    this.apiResponse = res
  }
}

注意事项

  • key值使用两层索引拼接,保证全局唯一,避免v-for警告
  • 兼容异常场景可以加可选链判断,比如v-if="meaning.definitions?.length",避免接口返回字段缺失导致的渲染报错
  • 层级取值根据你的实际接口返回调整,若你已经把接口返回的data层单独存为响应式变量,遍历第一层时直接写yourDataVar.meanings即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:36:03