vue元素没加key就会高效复用吗(网!

vue元素没加key就会高效复用吗(网

趋势迷

vue元素没加key就会高效复用吗(

2024-07-22 02:19:30 来源:网络

vue元素没加key就会高效复用吗(

vue中:key的作用??
假如没有key属性🦋-🦖:那么当text改变时😅_🐖,Vue会复用元素🐈🐩-🦘🐤,只改变元素的内容🪡🌾-🌏,而不会有新的元素被添加进来😁🌕——😫,也不会有旧的元素被删除🦟*--🤤😔。同理🐏🦠_|🌳😩,key属性被用在组件上时🦝🐷|🎗,当key改变时会引起新组件的创建和原有组件的删除😢|🤩,此时组件的生命周期钩子就会被触发💥--😾🍂。
在Vue3 中🃏——🪱✨,v-for 需要使用key 值的原因是😹🏓|-*,当列表更新时🌺🐕-——😊😸,Vue 会重新渲染整个列表🎇——🐓👽。如果列表中的元素没有唯一的key 值🐺🙀——🐬,Vue 将无法准确地跟踪每个元素的身份😴--🐅,从而导致重复渲染和性能问题🐁|🐜🌟。如果您正在使用v-for 循环一个数组或对象🐈‍⬛🦀-——😼,那么您应该为每个元素分配一个唯一的key 值😝|-🍄。这个key 好了吧🦚_🪴!

vue元素没加key就会高效复用吗(

Vue中使用v-for渲染数据为何要添加key属性?(原理及作用)??
在Vue中使用v-for进行列表渲染的时候🐖_*,它会默认使用“就地更新”的策略🦜|🐙。当Vue在进行列表渲染的时候🐿_😂🎄,Vue会直接对已有的标签就地更新🐂🦢-_🌿,并不会将所有的标签全部重新删除和重建🎰-——🐅🦇,只会重新渲染数据🐰🤣——-🐨,然后再创建新的元素直到数据渲染完为止👻|🐲。key属性可以用来提升v-for渲染的效率🐖|——🦢,vue中使用v-for渲染数据的时候有帮助请点赞🦘-🏆。
如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法🌿-🎽🐖,而使用key时🐡🎋-🦒🦮,它会基于key的变化重新排列元素顺序😩-🎊😗,并且会移除/销毁key不存在的元素🎍-🐱*。官方的解释对于初学者来说并不好理解😰|🦖,比如下面的问题💫🦙_|🎎🥉: 什么是新旧nodes,什么是VNode? 没有key的时候🌛*|_🕸,如何尝试修改和复用的? 有好了吧🦮😙_-🌵😎!
viewkey怎么看??
首先🎫_——🌍🦛,vue会复用相同组件🦁-_🐞,对于路由有多个子路由来说🐽🌺_-*,当在子路由来回切换时🙊😉||🐀🐚,会导致页面不刷新的问题🌱🎣——😪,这是因为不再执行created和mounted这些钩子函数🧶🦉-😮,可以通过watch来监听$route的变化从而加载不同的组件🌝_🦬🐥。通过设置key值为$route.path🪢🐳_🐵🪳,因为子路由的path不同💐😐_——🥉,从而避免了组件复用🐆-😕,子路由间来回切换时🤢🦙-_😒,..
然后通过虚拟DOM来对比之间的最小差异更新实现性能的优化🎄——|🤕,key的作用就是用来识别一些较小的差异来优化性能🏓_👺🙁,没有key的话vue会直接将变化的DOM元素删除🎀🦘——|🐬,添加一个新的元素🎊-——🐥😤。这样我们就可以在一些双向绑定时数据或试图没有同时更新时🐀🌳_🐘,通过对元素绑定key值已达到双向绑定的效果说完了💮🧵-_🤪。
VUE3中<Tempale>中:key的作用??
这个默认的模式是高效的🦫✨-🐙,但是只适用于不依赖子组件状态或临时DOM 状态(例如🌚|🐳:表单输入值) 的列表渲染输出🦊🌨_|🎍🐭。为了给Vue 一个提示🐹_😭😚,以便它能跟踪每个节点的身份🐕|🐽,从而重用和重新排序现有元素🌜_🐤🦉,你需要为每项提供一个唯一的key attribute🐫_🌾:建议] 尽可能在使用 v-for 时提供 key attribute🌪🦖_——🧵,..
但是我们这个key不是唯一的🐄😻_——🐪。大概就是🐭🏒-🦍🐒,最初的分别是0🐋🤑||🦂、1🌗_🙊、2😚🌲__*⛳,当我们选中第一个并删除的时候😯|-🐲,他的key就会变成0🌓🤕——-🥌、1🕊_|🦡。在列表重新渲染的时候🌚|🎈🌸,会有一个就地复用策略🪀-🐅;列表数据修改的时候🐲🦒——_✨,他会根据key值去判断某个值是否修改🤕_😫,如果修改*😟||🤤🐷,则重新渲染这一项🙂-🦉,否则复用之前的元素🦡🏸——|🎖。
vue中:key的作用??
其实不只是vue🐓🐇-——🌺😁,react中在执行列表渲染时也会要求给每个组件添加上key这个属性🐉⛅️|🐗。要解释key的作用🦂-🦁,不得不先介绍一下虚拟DOM的Diff算法了🍂——_🌵。我们知道🐊|🌷🎱,vue和react都实现了一套虚拟DOM🦆-_*😬,使我们可以不直接操作DOM元素♦——|🌛😖,只操作数据便可以重新渲染页面🤕🦚——_🎎🤤。而隐藏在背后的原理便是其高效的Diff算法😩|🏏🌺。1. 两个相同的是什么🐃😱|🦟。
官方推荐我们在使用v-for时🍃__🏐,给对应的元素或组件添加上一个🐹🪲——|🦚:key属性🌟-——😷。这个其实和Vue的虚拟DOM的Diff算法有关系🐵-|🍀🐬。这里我们借用React’s diff algorithm中的一张图来简单说明一下🐖🎖_-🧧:当某一层有很多相同的节点时🐵-🐏,也就是列表节点时🦁|🎲🐑,我们希望插入一个新的节点我们希望可以在B和C之间加一个F🌷🦍_😖*,Diff算法默认好了吧🦔🪅_-🥀!