Vue3列表渲染

v-for基本使用

语法: v-for=(项,索引) in 需要遍历的对象/数组

数组的更新检测

push()  pop()  shift()  unshift()  splice()  sort()  reverse() 这几个方法都会直接修改原来的数组

filter()  concat()  slice() 这几个方法不会替换原来的数组,而是会生成新的数组

v-for中的key是什么作用? diff算法

template(模板引擎)---->vnode(虚拟dom)------->真实dom   这里为什么要经过虚拟Dom,主要目的是为了进行多平台的适配.vdom下又有多个vnode节点

Vue中对列表的更新是怎么操作的呢?

在Vue中会对有Key和没有Key调用两个不同的方法;

有key,那么就使用patchKeyedChildren方法:

1.首先从头开始遍历.

2.从尾到头遍历

3. 如果旧节点遍历完了,依然有新的节点,那么新的节点就是添加(mount)

4.如果新的节点遍历完了,还有旧的节点,那么就移除旧的节点

5.杂乱的顺序,尽可能的把相同的元素进行复用

无key,那么就使用patchUnKeyedChildren方法:

1.比较长度, 如果旧的长度大于新的长度,那么就把旧的里面的数据移除

2.比较长度, 新的比较多.就创建新的节点.

结论:进行for循环的时候,加上key的性能会比较高.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容