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

2022-02-25 00:00:00 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://vuejs.org/v2/style-guide/#Keyed-v-for-essential

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

相关文章