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。这样我们在操作这个列表中就不会出现数据混乱的情况。

相关推荐
wuhen_n1 小时前
Pinia状态管理原理:从响应式核心到源码实现
前端·javascript·vue.js
wuhen_n2 小时前
KeepAlive:组件缓存实现深度解析
前端·javascript·vue.js
wuhen_n2 小时前
Vue Router与响应式系统的集成
前端·javascript·vue.js
Ruihong2 小时前
《VuReact:下一代 Vue 3 -> React 智能编译工具,支持 SFC 与增量迁移》
vue.js
lemon_yyds2 小时前
vue 2 升级vue3 : ref 和 v-model 命名为同名
前端·vue.js
前端Hardy5 小时前
告别 !important:现代 CSS 层叠控制指南,90% 的样式冲突其实不用它也能解
前端·vue.js·面试
前端Hardy5 小时前
Vue 3 性能优化的 5 个隐藏技巧,第 4 个连老手都未必知道
前端·vue.js·面试
洋洋技术笔记6 小时前
计算属性与侦听器
前端·vue.js
李剑一6 小时前
拿来就用!Vue3+Cesium 飞入效果封装,3D大屏多场景直接复用
前端·vue.js·cesium
tingshuo291717 小时前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记