Vue3学习笔记(n.0)

vue指令之v-for

首先创建自定义组件(practice5.vue):

html 复制代码
<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2024-07-05 21:28:45
 * @LastEditors: Mei
 * @LastEditTime: 2024-07-05 21:35:40
 * @FilePath: \Fighting\new_project_0705\my-vue-app\src\components\practice5.vue
 * @Description: 
 * 
 * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
-->
<template>

  <div>
    <div id="myList" v-for="(item,index) in arr" :key="index">{{ item.name }}

    </div>
  </div>

</template>


<script>
//列表渲染
//为什么循环的时候需要加key
//1.key的作用主要是为了高效的更新虚拟Dom,提高渲染性能
//2.key属性可以避免数据混乱的情况出现
export default{
  data(){
    return{
      arr:[{
        name:"张三"
      },
    {
      name:"李四"
    },
  {
    name:"王五"
  }]
    }
  }
}

</script>

<style scoped>
#myList{
  color: blue;
  background-color: yellow;
  margin-top: 20px;
}
</style>

然后再App.Vue中进行引入使用

最后运行结果为:

在使用v-for渲染列表时有几个注意点:

①循环的时候需要加key

1、作用

1.key的作用主要是为了高效的更新虚拟DOM,提高渲染性能。

2.key属性可以避免数据混乱的情况出现。

2、原理

1.vue实现了一套虚拟DOM,使我们可以不直接操作DOM元素只操作数据,就可以重新渲染页面,而隐藏在背后的原理是高效的Diff算法

2.当页面数据发生变化时,Diff算法只会比较同一层级的节点;

3.如果节点类型不同,直接干掉前面的节点,再创建并插入新的节点,不会再比较这个节点后面的子节点;如果节点类型相同,则会重新设置该节点属性,从而实现节点更新

4.使用key给每个节点做一个唯一标识,Diff算法就可以正确识别此节点,"就地更新"找到正确的位置插入新的节点

3、注意

1.key 的值只能是字符串或数字类型

  1. key 的值必须具有唯一性(即:key 的值不能重复)

3.建议把数据项 id 属性的值作为 key 的值(因为 id 属性的值具有唯一性)

4.使用 index 的值当作 key 的值没有任何意义(因为 index 的值不具有唯一性,实际项目中如果没有id,推荐使用index)

5.建议使用 v-for 指令时一定要指定 key 的值(既提升性能、又防止列表状态紊乱)

所以,简而言之,在实际的开发中,上面的数组列表一般是后端返回出来的数据,我们需要使用v-for将这些数据进行渲染,但是在使用v-for的时候也必须要加key,并且key的取值要有唯一性,一般都是数据的ID,比如学生列表的学生ID,或商品列表中的商品ID。这样我们在操作这个列表中就不会出现数据混乱的情况。

相关推荐
FRing033 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
视觉小萌新4 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
徐小夕6 小时前
深度剖析 30k star 的编码 Agent DeepSeek-Reasonix:长会话 Token 成本直降 80%
前端·vue.js·github
yyyang887 小时前
蓝牙系统整体架构详解
学习·信息与通信
程序边界7 小时前
一台数据集成软件的拆解笔记(下):一致性、容错、跑批与迁移,KFS 真正难的地方在这
java·前端·笔记
Linux-lucky7 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
ruanno_top9 小时前
1 万行表格只渲染 18 行:虚拟滚动让我放弃了三个功能
vue.js
金色光环9 小时前
【DSP学习】C2000_ADC中断_笔记
笔记·学习
Дерек的学习记录9 小时前
Unreal Engine 5:第三人称运动系统和人物动画
开发语言·学习·ue5
zhangrelay9 小时前
mrpt杂乱笔记-26-10-31
笔记·学习