v-for列表渲染

206 阅读1分钟

可遍历数组、对象、整数

vue核心是数据和视图的双向绑定,修改数组

1、变异方法,改变原数组,触发视图更新

  • push
  • unshift
  • pop
  • shift
  • splice
  • sort
  • reverse

2、非变异方法,返回新数组,不触发视图更新

  • conact
  • slice
  • filter

3、修改数组,不触发视图更新方式

  • 用索引修改数组项--》this.$set()
  • 直接修改数组长度--》splice()

4、不想修改原数组,想用副本来过滤或者排序数据

    computed:{
        filterBooks(){

        }
    }

5、key作用

vnode虚拟dom,diff算法同级比对,修改前后的dom一级一级的比对,当比对到某一层级时,发现有很多相似的节点,也就是列表节点,默认情况下还是同级比对

给节点添加key,作为唯一标识,key和内容进行了绑定,可以快速找到节点,高效更新dom

微信截图_20210824143858.png

6、index作为key

不足: (1)与没有key是一样的 (2)仅适用于不依赖子组件状态或者临时dom状态的列表渲染

<div v-for="(item,index) in list" :key="index">
    <demo></demo>
    <button @click="delClick(index)">删除</button>
</div>

<div v-for="(item,index) in list" :key="index">
    <input type="text">
    <button @click="delClick(index)">删除</button>
</div>

7、总结

diff算法默认使用“就地复用”策略,是一个交叉比对过程 同级比对,比对tag和key 用唯一值作为key,最大程度的利用dom,提升性能

8、参考: www.jianshu.com/p/4bd5e745c… www.cnblogs.com/youhong/p/1…