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

Vue之列表渲染

总的来说,列表渲染中key最好选择数据中唯一!尽量不要默认index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="../js/vue.js">

    </script>
</head>
<body>

    <!-- 遍历时都是(value,key) -->
    <!-- 
        1. 虚拟DOM中key的作用:
            key是虚拟DOM对象的标识,当状态中的数据发生变化时,Vue会根据[新数据]生成[新的虚拟DOM]
            随后Vue进行[新的虚拟DOM]与[旧的虚拟DOM]差异比较,比较规则如下.
        
        2. 对比规则
            (1). 旧虚拟DOM中内容没变,直接复用之前的真实DOM
                若虚拟DOM内容变了,则生成新的真实DOM
            (2). 没有找到,直接生成新的真实DOM
        
        3.用index作为key可能回发生问题
            (1).对数据进行逆序添加,逆序删除等破坏顺序操作,会进行没有必要的真实DOM更新
            (2).如果结构包括输入类DOM会产生错误DOM更新.
        4.key选择
            (1).最好选择数据的唯一.身份证号等.
            (2).如果没有逆序,用index也行.

     -->
    <div id="app">
        <h2>遍历数组(用的多)</h2>
        <button @click.once="add">添加一个老薛</button>
        <li v-for="(p,index) of persons":key="p.id">
           {{p.name}}-{{p.age}}
           <input type="text">
        </li>
        

    </div>


    <script type="text/javascript">
        const vm = new Vue({
            el:"#app",
            data(){
                return {
                    persons:[
                        {id:"001",name:"Barry",age:12},
                        {id:"002",name:"Barry2",age:12},
                        {id:"003",name:"Barry3",age:12},
                    ],
                    car:{
                        name:"奔驰E300L",
                        price:"65W",
                        color:"Black"
                    },
                    str:"Barry"
                }                
            },
            methods: {
                add(){
                    const p = {id:"004",name:"老薛",age:24}
                    this.persons.unshift(p)
                }
            },
        })

    </script>
</body>
</html>

相关文章:

  • 【虚拟机】Vmware虚拟机桥接 Destination Host Unreachable 问题解决
  • 前端三剑客 —— CSS (第六节)
  • 浅谈HTTP
  • 用html写一个爱心
  • Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介
  • Linux第4课 Linux的基本操作
  • windows渗透信息收集
  • 【精品教程】护网HVV实战教程资料合集(持续更新,共20节)
  • Go语言时间编程
  • Android Studio 通过 WIFI 调试手机 app
  • CAD Plant3D 2024 下载地址及安装教程
  • 设计模式之建造者模式:灵活可扩展的对象创建过程
  • 华为审核被拒提示: 您的应用存在(最近任务列表隐藏风险活动)的行为,不符合华为应用市场审核标准
  • kvm、zstack导出qcow2文件
  • python项目练习——14.学生管理系统
  • 在.Net6中用gdal实现第一个功能
  • 4月04日,每日信息差
  • 利用Idea实现Ajax登录(maven工程)
  • 【GlobalMapper精品教程】073:像素到点(Pixels-to-Points)从无人机图像轻松生成点云
  • 积鼎国产流体仿真解决方案助力2024航空装备数智化大会顺利召开
  • 韩国代总统、国务总理韩德洙宣布辞职
  • 澎湃回声丨23岁小伙“被精神病8年”续:今日将被移出“重精”管理系统
  • 济南高新区一季度GDP增长8.5%,第二产业增加值同比增长14.4%
  • 海口市政协党组成员、秘书长、机关党组书记汪娟被查
  • 解放日报:中国大模型企业的发展机遇已经到来
  • 南部战区位南海海域进行例行巡航