列表循环-强调v-for循环中key值的注意点

发布时间 2023-06-06 23:25:50作者: Young_Yang_Yang

key的注意事项

  1. key的值只能是字符串数字类型
  2. key的值必须具有唯一性(即:key的值不能重复)
  3. 建议把数据项id属性的值作为key的值(因为id属性的值具有唯一性)
  4. 使用index的值当作key的值没有任何意义(因为index的值不具有唯一性)
  5. 建议使用v-for指令时一定要指定key的值(即提升性能、又防止列表状态紊乱)
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 在页面中声明一个将要被 vue 所控制的 DOM 区域 -->
  <div id="app">

    <!-- 添加用户的区域 -->
    <div>
      <input type="text" v-model="name">
      <button @click="addNewUser">添加</button>
    </div>

    <!-- 用户列表区域 -->
    <ul>
      <li v-for="(user, index) in userlist" :key="user.id">
        <input type="checkbox" />
        姓名:{{user.name}}
      </li>
    </ul>
  </div>

  <script src="lib/vue-2.6.12.js"></script>
  <script>
    const vm = new Vue({
      el: '#app',
      data: {
        // 用户列表
        userlist: [
          { id: 1, name: 'zs' },
          { id: 2, name: 'ls' }
        ],
        // 输入的用户名
        name: '',
        // 下一个可用的 id 值
        nextId: 3
      },
      methods: {
        // 点击了添加按钮
        addNewUser() {
          this.userlist.unshift({ id: this.nextId, name: this.name })
          this.name = ''
          this.nextId++
        }
      },
    })
  </script>
</body>

</html>