• Vue循环渲染 v-for和v-if,key


     1、v-for和v-if

    常规用法

    1. <div class="app">
    2. <div v-for="el in arr">
    3. <div v-if="el.number>200">
    4. <h1>{{el.number}}h1>
    5. <h2>{{el.name}}h2>
    6. div>
    7. div>
    8. div>
    1. new Vue({
    2. el: ".app",
    3. data: {
    4. arr: [{
    5. number: 111,
    6. name: "Bob"
    7. }, {
    8. number: 222,
    9. name: "jack"
    10. }, {
    11. number: 333,
    12. name: "Steven"
    13. }]
    14. },
    15. }
    16. )

    效果图

    常规的方法会引起一个问题:v-if每次判断成功时都会 再创建一个div来装得到的数据,相当于我们用了两个div来装

     为了解决这一问题我们可以使用冰元素

    1. <div class="app">
    2. <div v-for="el in arr">
    3. <template v-if="el.number>200">
    4. <h1>{{el.number}}h1>
    5. <h2>{{el.name}}h2>
    6. template>
    7. div>
    8. div>

    这样我们就可以解决这一问题

     2、key

    data中for循环的容器数据个数发生变化时,会跟for中的vm节点个数作比较如果数据多了,会在vm节点后面增加对应数量的节点,并不会重新创建所有节点,然后vm去更新对应的DOM然后就去刷新数据到界面: 按照for的数据容器中的数据顺序来渲染如果用户以前操作过旧节点,那么新数据顺序可能会出现跟旧节点顺序不匹配的效果(旧节点跟旧数据没有对应起来)

    例如:

    1. <div id="app">
    2. <h1>点击按钮h1>
    3. <div v-for="el in arr">
    4. <input type="checkbox" :value="el.id">
    5. <b>{{el.title}}b>
    6. div>
    7. <button @click="addmore">加载更多button>
    8. div>
    1. new Vue({
    2. el:"#app",
    3. data:{
    4. id:5,
    5. arr:[{id:1,title:"游泳"},
    6. {id:2,title:"跑步"},
    7. {id:3,title:"跳远"},
    8. {id:4,title:"爱好"}]
    9. },
    10. methods:{
    11. addmore(){
    12. let obj={id:this.id++,title:"爱好"+this.id}
    13. // this.arr.push(obj)
    14. this.arr.unshift(obj)
    15. }
    16. }
    17. })

    界面显示

    当选择其中的任意复选框按钮后,

    此时若点击加载更多按钮,就出现复选框的bug:复选框按钮并没有跟随移动,始终在之前的位置

    为了解决这一问题引入key值:

          for循环时把数据跟创建的节点利用给元素绑定唯一key值

     所以在之前的HTML代码中稍作修改如:

    这样就可以对其进行绑定

     

  • 相关阅读:
    在Leangoo领歌里设置背景图片
    2023年亚太杯数学建模思路 - 案例:异常检测
    【C语言】指针作为参数传值常见问题
    Android Room使用模板
    ChatGPT:理解HTTP请求数据格式:JSON、x-www-form-urlencoded和form-data
    Centos8怎么进行复位清屏? Centos8终端复位清屏的技巧
    如何在 Blender 中更快地渲染?
    【无公网IP】安装Wnmp并结合内网穿透,实现灵活可靠的外网访问内网服务!
    Linux日志管理logrotate日志轮转
    git cherry pick
  • 原文地址:https://blog.csdn.net/m0_63470734/article/details/126614090