-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
[vue] 你知道vue中key的原理吗?说说你对它的理解 #545
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
作用的话,便于diff算法的更新,key的唯一性,能让算法更快的找到需要更新的dom,需要注意的是,key要唯一,不然会出现很隐蔽性的更新问题。 |
在绑定key的时候,最好是一个唯一的值,如 |
@Aaron0525 请问 隐蔽性的更新问题 是什么意思?我的理解就是如果不使用唯一key在有状态组件中会出现渲染错误,如果使用index也可能会出现渲染错位的情况,因为diff是同级比对 |
Key 不是用在循环中吗 |
便于Diff时更高效的进行节点查询对比。 |
key的作用主要是为了高效的更新虚拟DOM;
|
为啥没有人说key最重要的是防止去复用dom啊 |
key是具有唯一性的,能让算法更快的找到需要跟新的DOM,而不是一个个的去替换。还有一个就是防止复用。 |
使用key不一定就高效,key的作用是维护状态和触发过渡效果 |
哎,我最近都没怎么联系,同样的祝福你们事事顺心
|
Vue 中使用的算法是基于"Virtual DOM" (虚拟 DOM) 的 diff 算法,用于比较和更新两个虚拟 DOM 树之间的差异。 虚拟 DOM 是一个轻量级的 JavaScript 对象树,它是对实际 DOM 的抽象表示。当 Vue 组件发生变化时,Vue 会创建一个新的虚拟 DOM 树,并通过 diff 算法将新旧虚拟 DOM 树进行比较,找出两者之间的差异。 下面是 diff 算法的详细步骤: 创建新的虚拟 DOM 树:当组件状态发生变化时,Vue 会重新渲染组件,并生成一个新的虚拟 DOM 树。 对比新旧虚拟 DOM 树:Vue 会逐个比较新旧虚拟 DOM 树的节点,从根节点开始递归地进行比较。 查找差异:在比较过程中,Vue 会找出两个节点之间的差异。它会比较节点的标签类型、属性、子节点等信息,以确定节点是否相同或不同。 更新差异:一旦找到差异,Vue 会根据差异类型采取相应的操作。这可能涉及插入、移动、更新或删除实际 DOM 节点。 插入:当新的节点在新的虚拟 DOM 树中出现但在旧的虚拟 DOM 树中不存在时,Vue 会在相应位置插入实际 DOM 节点。 通过使用 diff 算法,Vue 可以避免直接操作实际 DOM,并且只对需要更新的部分进行操作,从而提高了性能和渲染效率。通过比较虚拟 DOM 树的差异,Vue 可以最小化对实际 DOM 的修改,减少了不必要的重绘和回流,提升了应用的性能和用户体验。 |
[vue] 你知道vue中key的原理吗?说说你对它的理解
The text was updated successfully, but these errors were encountered: