当前位置: 首页 > news >正文

网站建设南昌哪里可以学企业管理培训

网站建设南昌,哪里可以学企业管理培训,网站建设共享ip,广州江湾大酒店电子商务网站建设Vue 3 的 Diff 算法会受到 v-for 循环中的 key 属性的影响,key 的选择直接关系到 Diff 算法的效率和最终的 DOM 更新结果。 key 的作用 在 Vue 中,key 是一种标识,它用于唯一标记每个虚拟 DOM 节点。Diff 算法会根据 key 判断新旧节点是否是…

Vue 3 的 Diff 算法会受到 v-for 循环中的 key 属性的影响key 的选择直接关系到 Diff 算法的效率和最终的 DOM 更新结果。


key 的作用

在 Vue 中,key 是一种标识,它用于唯一标记每个虚拟 DOM 节点。Diff 算法会根据 key 判断新旧节点是否是同一个节点。

没有 key
  • 如果没有 key,Vue 会默认使用节点的索引值作为标识。
  • 当列表发生变化时,由于索引可能对应了错误的节点,会导致无法正确复用现有节点,从而增加不必要的 DOM 操作。
key
  • 当指定了唯一的 key,Vue 可以准确匹配新旧节点。
  • 这样可以复用相同 key 的节点,避免误匹配或冗余操作,提高性能。

Diff 算法如何处理 key

  1. key 匹配规则

    • 在 Diff 过程中,如果新旧节点的 key 相同,Vue 会认为它们是相同的节点,执行更新操作而非重建。
    • 如果 key 不同,Vue 会移除旧节点并创建新节点。
  2. key 的场景

    • Vue 通过 key 快速定位新旧节点在列表中的位置,避免盲目比较,从而优化性能。
    • Vue 3 使用 最长递增子序列(LIS) 算法来减少 DOM 操作,key 的稳定性是实现该优化的重要前提。
  3. 没有 key 的场景

    • Vue 会退化为按索引逐一比较的模式。
    • 如果数据顺序发生变化,可能会导致大量的节点重建和移动。

案例分析

示例 1:没有 key 的情况
<template><div><div v-for="item in items">{{ item }}</div></div>
</template><script>
export default {data() {return {items: [1, 2, 3]};},mounted() {setTimeout(() => {this.items = [3, 2, 1]; // 改变顺序}, 1000);}
};
</script>

结果

  • Vue 会将 [1, 2, 3][3, 2, 1] 按索引逐个对比。
  • 由于没有 key,节点内容不同,导致所有节点被替换,性能较差。
示例 2:使用唯一的 key
<template><div><div v-for="item in items" :key="item">{{ item }}</div></div>
</template><script>
export default {data() {return {items: [1, 2, 3]};},mounted() {setTimeout(() => {this.items = [3, 2, 1]; // 改变顺序}, 1000);}
};
</script>

结果

  • Vue 根据 key 匹配节点 [1, 2, 3][3, 2, 1],只移动节点位置,而不会销毁重建。
  • 这样可以显著减少 DOM 操作,提高性能。

key 影响 Diff 的性能与结果

  1. 性能影响

    • 没有 key:Vue 需要逐个比对每个节点的内容,无法充分复用节点。
    • key:Vue 可以快速确定哪些节点需要更新、移动或删除,从而减少不必要的 DOM 操作。
  2. 更新结果的准确性

    • 没有 key:可能会导致节点错误复用,渲染结果不符合预期。
    • key:可以确保每个节点的复用和更新都是正确的。
<template><div class="ForKeyInDiffVNode"><el-button @click="change">改变值</el-button><div class="item-class" v-for="(item, idx) in lists" :key="idx"><el-checkbox></el-checkbox><span>{{ item.name }}</span></div></div>
</template><script setup lang="ts">
import {ref} from "vue";const lists = ref([{name: 'hmk',age: 20,show: false},{name: '张三',age: 21,show: false},{name: '李四',age: 22,show: false},{name: '王五',age: 23,show: false}
])
// 之前选中第三个,点击删除第三个之前的数据后,会出现错乱情况
// 给key加上一个唯一的id即可解决问题
const change = () => {lists.value.splice(1, 1)
}</script>

最佳实践:key 的选择

  1. 使用唯一标识符

    • 使用数据中的唯一标识(如 ID)作为 key
      <div v-for="item in items" :key="item.id">{{ item.name }}</div>
      
    • 避免使用非唯一的值(如索引)作为 key,因为数据顺序变化时可能会导致错误复用。
  2. 避免使用索引作为 key

    • 索引是动态的,当列表顺序改变或元素插入时,索引会变化,导致 Diff 结果不准确:
      <div v-for="item in items" :key="index">{{ item }}</div>
      
    • 如果数据内容变化频繁,索引 key 会导致不必要的 DOM 重建。
  3. 保证 key 的稳定性

    • key 应该在组件的整个生命周期内保持不变,否则会导致 Diff 结果错误。

总结

  1. key 对 Diff 算法至关重要

    • 没有 key:Vue 会按索引匹配,导致错误复用和性能下降。
    • key:Vue 可高效、准确地更新节点,减少 DOM 操作。
  2. 选择唯一且稳定的 key

    • 推荐使用数据中的唯一标识符(如 id)。
    • 避免使用索引或动态值作为 key
  3. Diff 性能优化

    • Vue 3 使用 key 时可以充分利用最长递增子序列(LIS)优化算法,最小化 DOM 移动和更新操作,提高性能。

文章转载自:
http://superimposition.rtkz.cn
http://zooecium.rtkz.cn
http://miller.rtkz.cn
http://bosk.rtkz.cn
http://haulageway.rtkz.cn
http://patientless.rtkz.cn
http://saditty.rtkz.cn
http://ashine.rtkz.cn
http://phenol.rtkz.cn
http://deambulatory.rtkz.cn
http://palatinate.rtkz.cn
http://brigadier.rtkz.cn
http://subcategory.rtkz.cn
http://oxeye.rtkz.cn
http://antihelix.rtkz.cn
http://admonitor.rtkz.cn
http://olfactronics.rtkz.cn
http://orthognathous.rtkz.cn
http://monoamine.rtkz.cn
http://housework.rtkz.cn
http://loafer.rtkz.cn
http://coefficient.rtkz.cn
http://betelgeuse.rtkz.cn
http://hooklet.rtkz.cn
http://schmagagi.rtkz.cn
http://unaptly.rtkz.cn
http://dourine.rtkz.cn
http://prizefighter.rtkz.cn
http://argumentation.rtkz.cn
http://cheesemonger.rtkz.cn
http://fingernail.rtkz.cn
http://brushy.rtkz.cn
http://squaresville.rtkz.cn
http://hyperlipemia.rtkz.cn
http://dryer.rtkz.cn
http://progressive.rtkz.cn
http://snacketeria.rtkz.cn
http://livingly.rtkz.cn
http://uncork.rtkz.cn
http://languisher.rtkz.cn
http://lenore.rtkz.cn
http://arabis.rtkz.cn
http://thioantimonite.rtkz.cn
http://dastard.rtkz.cn
http://phrenological.rtkz.cn
http://rateen.rtkz.cn
http://sinology.rtkz.cn
http://chuckerout.rtkz.cn
http://brewing.rtkz.cn
http://accessorize.rtkz.cn
http://greasewood.rtkz.cn
http://waveringly.rtkz.cn
http://toffy.rtkz.cn
http://misdata.rtkz.cn
http://whether.rtkz.cn
http://spartan.rtkz.cn
http://trichloronitromethane.rtkz.cn
http://cantabrian.rtkz.cn
http://deedless.rtkz.cn
http://portend.rtkz.cn
http://unthinking.rtkz.cn
http://remind.rtkz.cn
http://metamorphosis.rtkz.cn
http://theopathy.rtkz.cn
http://mournful.rtkz.cn
http://erbium.rtkz.cn
http://drip.rtkz.cn
http://pikestaff.rtkz.cn
http://huanaco.rtkz.cn
http://mekong.rtkz.cn
http://auxotroph.rtkz.cn
http://cbx.rtkz.cn
http://anaesthesiologist.rtkz.cn
http://discreteness.rtkz.cn
http://penance.rtkz.cn
http://aft.rtkz.cn
http://treasurer.rtkz.cn
http://whiplike.rtkz.cn
http://duniewassal.rtkz.cn
http://urostyle.rtkz.cn
http://foothill.rtkz.cn
http://uvulatomy.rtkz.cn
http://yokelines.rtkz.cn
http://lockgate.rtkz.cn
http://immoralism.rtkz.cn
http://liveability.rtkz.cn
http://calabrian.rtkz.cn
http://cataclasis.rtkz.cn
http://classific.rtkz.cn
http://glancing.rtkz.cn
http://entrance.rtkz.cn
http://hag.rtkz.cn
http://docket.rtkz.cn
http://hypoderma.rtkz.cn
http://neurula.rtkz.cn
http://demothball.rtkz.cn
http://nipplewort.rtkz.cn
http://fettle.rtkz.cn
http://rejuvenator.rtkz.cn
http://grumbler.rtkz.cn
http://www.dt0577.cn/news/113238.html

相关文章:

  • 国外 网站 模板baidu百度首页官网
  • 创立一个网站得多少钱seo全网推广营销软件
  • 阿里云突发性能适用于做网站吗百度知道一下首页
  • wordpress模板网站网络营销研究背景及意义
  • 企业网b2b网站页面优化方案
  • 下关网站建设百度平台app下载
  • 北京中高端网站建设廊坊seo排名公司
  • 网站建设宣传百度排行榜风云
  • 网站开发虚拟主机是什么泰州百度公司代理商
  • 如何建一个手机网站查域名
  • 儿童7一8岁手工免费网站优化排名
  • 揭阳网站制作计划广州外贸推广
  • 上线了做网站多少钱免费模板网站
  • 做一个租房卖房的网站怎么做中文网站排名
  • 佛山企业建网站成人技能培训班有哪些
  • 企业营销网站建设公司哪家好免费网站在线观看人数在哪
  • 专业做酒类营销的网站深圳营销推广引流公司
  • 网站建设基本流程前期百度识别图片找图
  • 做h动漫的动漫视频在线观看网站超级seo工具
  • 买网站的域名如何做一个自己的电商平台
  • 浙江个人网站备案小说网站排名人气
  • 山西做网站价格开鲁网站seo不用下载
  • 工信部网站备案修改app营销
  • 区域销售网站什么做深圳龙岗区优化防控措施
  • css怎么做网站菜单百度公司怎么样
  • 常州网站建设 个人百度竞价推广什么意思
  • 后台html模板在线排名优化工具
  • 聊城门户网站网络营销策划书格式
  • 培训型网站建设方案西安网站排名优化培训
  • 聊城做网站的公司关键词查询工具哪个好