vue中key的用法

加key是提升vue渲染效率,减少DOM操作。

vue列表元素的更新机制:

        当列表元素没有设置key的时候,vue判断是否操作这个DOM元素,是根据新旧两次数据的元素顺序进行对比,看一下元素内容是否发生变化。发生变化vue就操作这个DOM元素,没有变就不操作这个DOM元素。

        当列表元素设置了key的时候,vue判断新旧dom内容是否发生变化的时候,不再按照顺序对比了,而是找相同key值得元素进行对比,不受顺序得影响了。能始终保证只操作变化了得DOM元素。

 问题:遍历数据得索引能否作为key值?

     不能,因为索引是按元素顺序生成的。且始终从0开始,因此和不设置key效果一样了。

案例:

不加:key="item":

<template>
  <div>
    <h3 style="color: #f69">key的用法</h3>
    <p v-for="item in arr">{
  { item }}</p>
    <!-- <button @click="arr.push(4)">添加</button> -->
    <button @click="arr.unshift(4)">添加</button>
    <!-- 用:key 元素单个添加,不改变原有元素,不用:key 元素都变动,改变原有元素 -->
  </div>
</template>
<script>
export default {
  data() {
    return {
      arr: [1, 2, 3],
    };
  },
  methods: {},
  created: {},
};
</script>

 运行:

加key="item":

<template>
  <div>
    <h3 style="color: #f69">key的用法</h3>
    <p v-for="item in arr" :key="item">{
  { item }}</p>
    <!-- <button @click="arr.push(4)">添加</button> -->
    <button @click="arr.unshift(4)">添加</button>
    <!-- 用:key 元素单个添加,不改变原有元素,不用:key 元素都变动,改变原有元素 -->
  </div>
</template>
<script>
export default {
  data() {
    return {
      arr: [1, 2, 3],
    };
  },
  methods: {},
  created: {},
};
</script>

运行:

相关推荐

  1. vue key 原理

    2024-01-05 15:56:03       13 阅读
  2. vue$nextTick

    2024-01-05 15:56:03       9 阅读
  3. Vuekey作用和原理

    2024-01-05 15:56:03       33 阅读
  4. Vuekey到底有什

    2024-01-05 15:56:03       5 阅读
  5. vue3ts基本

    2024-01-05 15:56:03       32 阅读
  6. Webpack、Vite在Vue项目常用

    2024-01-05 15:56:03       20 阅读
  7. vuekeep-alive和含义

    2024-01-05 15:56:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 15:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 15:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 15:56:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 15:56:03       20 阅读

热门阅读

  1. 用redis广播消息更新集群环境下本地缓存

    2024-01-05 15:56:03       40 阅读
  2. TCL学习笔记(持续更新)

    2024-01-05 15:56:03       36 阅读
  3. Centos7.9和Debian12部署Minio详细流程

    2024-01-05 15:56:03       41 阅读
  4. UE5.1_AssetEditorSubsystem&UE4_AssetEditorManager

    2024-01-05 15:56:03       34 阅读
  5. CondaError: Downloaded bytes did not match Content-Length

    2024-01-05 15:56:03       36 阅读
  6. mysql函数(二)之常见的字符串函数

    2024-01-05 15:56:03       37 阅读