json - Nuxt 如何在数组上循环并使用 v-for 正确显示数据

标签 json vue.js nuxt.js

我有一个电子商务网站,我想循环 json 中的嵌套数据。我尝试了很多东西但找不到。

async fetch() {
    this.post = await fetch(
      `http://test.com/api.php?id=${this.$route.params.id}`
    ).then((res) => res.json())
  }

我这样使用;

<h3>{{ post.title }}</h3>
<li v-for="(index, post.sizes) in sizes" :key="index">
        {{ sizes.index }}
      </li>

我的 json 数据是:"sizes": "[\"XS\",\"S\",\"M\",\"L\"]",

感谢您的帮助。

最佳答案

拥有这种代码并不好。

<li v-for="(size, index) in sizes" :key="index">
  {{ size }}
</li>

您需要将数据更新为类似的内容

sizes: [
  { id: 1, name: "XS" },
  { id: 2, name: "S" },
  { id: 3, name: "M" },
  { id: 4, name: "L" },
]

或者更好的是,从 API 获取一些 id,然后像这样使用它

<li v-for="size in sizes" :key="side.id">
  {{ size.name }}
</li>

拥有可变的 index 不应该用于 :key,因为它的作用与应该做的相反。


:key 是必不可少的,更多信息请参见:https://v2.vuejs.org/v2/style-guide/#Keyed-v-for-essential

这里有一篇博客文章解释了这一点:https://michaelnthiessen.com/understanding-the-key-attribute#dont-use-an-index-as-the-key

关于json - Nuxt 如何在数组上循环并使用 v-for 正确显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68045735/

相关文章:

vue.js - 在 Nuxt 中将多个新路径扩展到单个页面

ios - 从服务器获取 JSON 后如何更新应用程序中的标签?如果应该实时更新

javascript - 在方法中动态创建 JSON (Javascript) 中的对象属性

javascript - VueJS 如何在 for 循环中每行 3 个项目只选择一个项目?

vue.js - 访问计算 VueJS 的先前值

javascript - Process.env.PORT 与硬编码

mysql - 从 mysql 字段中的 json 中提取数据

javascript - 如何修复此循环,以便在单击时加载并打开正确的链接?

vue.js - 如何为嵌套的 v-for 创建唯一引用?

vue.js - 如何使用服务器端渲染在 vue/nuxt 中隐藏客户端代码?