vue3 ts 渲染列表报错

在使用vue3+ts前提下
使用v-for渲染列表数据list 数据 视图正常更新 但代码报错 如下图所示 是不是item需要定义一个类型?如何定义呢?(ts没系统学习)

img

v-if 和v-for 不要一起使用。可以在div外包裹一层template。list 需要定义类型。

1、list这个变量好像没在script里定义,是不是要遍历useCatList

v-if和v-for不可以一起用吧

望采纳!点击该回答右侧的“采纳”按钮即可采纳!!!
在使用v-for渲染列表数据时,你可以通过在模板中给item定义类型来解决这个问题。

例如,如果你想要渲染一个list数组,其中每个item都是字符串类型,你可以这样写:

<template>
  <div>
    <ul>
      <li v-for="(item: string, index: number) in list" :key="index">{{ item }}</li>
    </ul>
  </div>
</template>

<script lang="ts">
export default {
  data() {
    return {
      list: ['item1', 'item2', 'item3']
    }
  }
}
</script>


如果item是其他类型,你可以使用相应的类型定义。例如,如果item是对象类型,你可以这样写:

<template>
  <div>
    <ul>
      <li v-for="(item: { name: string, age: number }, index: number) in list" :key="index">{{ item.name }} - {{ item.age }}</li>
    </ul>
  </div>
</template>

<script lang="ts">
export default {
  data() {
    return {
      list: [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]
    }
  }
}
</script>


这样就可以解决你的问题了。另外,在使用v-for渲染列表数据时,还有一个很重要的注意事项,就是一定要为每个item添加key属性。key属性的作用是告诉Vue.js如何识别每个item是否改变,从而更新视图。如果你没有为item添加key属性,Vue.js可能会抛出一个警告,提示你添加key属性。