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

泉州网站优化排名推广腾讯云如何注册域名

泉州网站优化排名推广,腾讯云如何注册域名,智能建站制作,软件开发中采用结构化生命方法起源&#xff1a; for循环的:key的值使用index绑定&#xff0c;当循环列表条目变化更新&#xff0c;导致虚拟 DOM Diff 算法认为原有项被替换&#xff0c;而不是更新。 // vue2写法 错误例子 <template><div><button click"addItem">添加项目<…

起源:

for循环的:key的值使用index绑定,当循环列表条目变化更新,导致虚拟 DOM Diff 算法认为原有项被替换,而更新

// vue2写法 错误例子
<template><div><button @click="addItem">添加项目</button><button @click="removeItem">删除项目</button><ul><li v-for="(item, index) in list" :key="index">{{ item.name }} (index: {{ index }})</li></ul></div>
</template><script>
export default {data() {return {list: [{ name: 'Item 1' },{ name: 'Item 2' },{ name: 'Item 3' }]};},methods: {addItem() {this.list.splice(1, 0, { name: `New Item` }); // 在索引1的位置插入一个新项},removeItem() {this.list.splice(0, 1); // 删除索引0位置的项}}
};
</script>
// vue3 错误例子
<template><div><button @click="addItem">添加项目</button><button @click="removeItem">删除项目</button><ul><li v-for="(item, index) in list" :key="index">{{ item.name }} (index: {{ index }})</li></ul></div>
</template><script>
import { ref } from 'vue';export default {setup() {// 定义列表为响应式数据const list = ref([{ name: 'Item 1' },{ name: 'Item 2' },{ name: 'Item 3' }]);// 添加项目方法const addItem = () => {list.value.splice(1, 0, { name: 'New Item' }); // 在索引1的位置插入一个新项};// 删除项目方法const removeItem = () => {list.value.splice(0, 1); // 删除索引0位置的项};return {list,addItem,removeItem};}
};
</script>

解决方法:

不要使用 index 作为 key,而是使用数据中的唯一标识符或者随机数,这样可以避免 Diff 算法的误判,确保列表在更新时能够正确地追踪每个项的状态,提升渲染性能。

//vue2写法
<template><div><button @click="addItem">添加项目</button><button @click="removeItem">删除项目</button><ul><li v-for="item in list" :key="item.id">{{ item.name }} (id: {{ item.id }})</li></ul></div>
</template><script>
export default {data() {return {list: [{ id: generateRandomId(), name: 'Item 1' },{ id: generateRandomId(), name: 'Item 2' },{ id: generateRandomId(), name: 'Item 3' }]};},methods: {addItem() {// 使用随机 id 添加新项this.list.push({ id: generateRandomId(), name: `New Item` });},removeItem() {this.list.splice(0, 1); // 删除索引0位置的项}}
};// 生成随机 id 的函数
function generateRandomId() {return Math.floor(Math.random() * 1000000); // 生成一个 6 位的随机数
}
</script>
// vue3 写法,正确例子
<template><div><button @click="addItem">添加项目</button><button @click="removeItem">删除项目</button><ul><li v-for="item in list" :key="item.id">{{ item.name }} (id: {{ item.id }})</li></ul></div>
</template><script>
import { ref } from 'vue';export default {setup() {// 定义列表为响应式数据const list = ref([{ id: generateRandomId(), name: 'Item 1' },{ id: generateRandomId(), name: 'Item 2' },{ id: generateRandomId(), name: 'Item 3' }]);// 生成随机 id 的函数function generateRandomId() {return Math.floor(Math.random() * 1000000); // 生成一个 6 位的随机数}// 添加项目方法const addItem = () => {list.value.push({ id: generateRandomId(), name: 'New Item' });};// 删除项目方法const removeItem = () => {list.value.splice(0, 1); // 删除索引0位置的项};return {list,addItem,removeItem};}
};
</script>

Diff算法学习:

概念:

Diff算法主要通过比较两个数据结构,并找出最小的插入、删除或修改操作,将一个数据结构变成另一个。例如,在比较两个字符串或数组时,算法会找出最小的变化(即最少的增删改操作),使一个序列变成另一个。

原理:

Diff 算法的主要思想是找到两个序列之间的最长公共子序列,从而计算出需要的修改步骤。通常通过动态规划来实现 LCS,从而计算出最小的修改路径

Diff 算法步骤通常如下:

  1. 比较两个数据结构的每一个元素。
  2. 如果两个元素相同,则无需操作,直接继续。
  3. 如果两个元素不同,则记录变化的操作(例如插入、删除或替换)。
  4. 重复以上步骤,直到找到最优路径。
http://www.yayakq.cn/news/925110/

相关文章:

  • 枣庄企业网站建设网站权重不够高 导致
  • wordpress 截取长度手机优化大师下载2022
  • 南京企业自助建站网站域名在哪看
  • 行业资讯网站有哪些专业网站设计公司和普通设计公司的区别
  • 郑州做网站加密的公司做一个简单网站
  • 网站模版 优帮云代理公司注册有什么猫腻
  • 最专业微网站建设公司虚拟币挖矿网站开发
  • 湖南怀化市住房城乡建设局网站台州网站排名公司
  • 建设部网站资质核查seo 0xu
  • 做网站好还是阿里巴巴重庆綦江网站建设
  • 南宁seo优势seo咨询
  • 怎么做网站收录wordpress媒体播放器
  • 怎么建设一个简单的网站睢县做网站的公司
  • 建筑效果图素材网站网站推广码怎么做
  • 商业网站建设知识点python的网站开发源码
  • 大连装修网站推广图片生成器下载
  • 网站前端设计理念淘宝客商品推广网站建设
  • 中山网站改版cnzz统计 wordpress
  • 网站后台根据前端做吗官方网站建设项目询价
  • 帕绍网站建设广州网站建设新际
  • 网站设计需要考虑哪些基本原则用php做网站后台
  • 集团网站定制wordpress excel
  • 买的网站模板怎么上传百度知道网页版地址
  • 做网站找浩森宇特大连网站制作-中国互联
  • 网站 空间网站开发与软件开发
  • 西安都蓝网站建设广告公司网站首页设计页面
  • 网站建设模式有哪些个人网上银行入口
  • 八爪鱼 wordpress网站seo文章
  • 佛山网站建设公司招聘湖南做网站360o
  • 石家庄p2p网站开发分销系统开发公司