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

vue(五)基础语法--循环遍历指令

目录

简单数据的处理(常用) 

复杂数据(json数据)

 v-for 与对象

通过key管理状态

Key的来源


这一节类同于vue(四)基础语法--条件渲染-CSDN博客 ,本质都是那些基础语句语法的实现。

简单介绍

我们可以使用v-for指令基于一个数组来渲染一个列表。v-for指令的值需要使用 item in items形式的特殊语法,

其中 items 是源数据的数组,而 item 是迭代项的别名

简单数据的处理(常用) 

<template>
    <h1>列表渲染</h1>
    <p v-for="item in names"> {{ item }} </p>  
</template>
<script>
    export default{
        data(){
            return{
                names:["计算机网络","计算机组成原理",'数据结构与算法','操作系统']
            }
        }
    }
</script>  

如下所示: 

 

复杂数据(json数据)

大多数情况,我们渲染的数据源来源于网络请求,也就是JSON格式

<template>
    <h1>列表渲染</h1>
    <div v-for="item in result">
        <p> {{ item.title }} </p>
        <p> {{ item.url }} </p>
    </div>
</template>
<script>
    export default{
        data(){
            return{
                    result:[{
                        id:"1",
                        title:"河北大学成功获批国家社会科学基金重大项目",
                        url:"https://www.hbu.edu.cn/info/1167/20000.htm"
                    },{
                        id:"2",
                        title:"2024年河北省高校图书馆年会在河北大学举办",
                        url:"https://www.hbu.edu.cn/info/1167/20015.htm"
                    },{
                        id:"3",
                        title:"河北大学举办2025年研究生元旦晚会",
                        url:"https://www.hbu.edu.cn/info/1167/20023.htm"
                    }
                ]
            }
        }
    }
</script>

v-for 也支持使用可选的第二个参数表示当前项的位置索引

<template>
    <h1>列表渲染</h1>
    <p v-for="(item,index) in names">{{ index }}-{{ item }} </p>
</template>
<script>
    export default{
        data(){
            return{
                names:["计算机网络","计算机组成原理",'数据结构与算法','操作系统'] 
            }
        }
    }
</script>

上述代码等同于:

<h1>列表渲染</h1>
<p>0-计算机网络</p>
<p>1-计算机组成原理</p>
<p>2-数据结构与算法</p>
<p>3-操作系统</p>

也可以使用 of 作为分隔符来替代 in 这更接近JavaScript的迭代器语法:

 v-for 与对象

也可以使用v-for来遍历一个对象的所有属性

<template>
    <h1>列表渲染</h1>
    <p v-for="(value,key,index) of userInfo">{{ value }} - {{ key }} -{{ index }}</p>
 </template>
<script>
    export default{
        data(){
            return{
                userInfo:{
                    name:"张三",
                    age:20
                }
            }
        }
    }
</script>

等同于:

<h1>列表渲染</h1>
<p>张三 - name - 0</p>
<p>20 - age - 1</p>

通过key管理状态

Vue默认按照“就地更新”的策略来更新通过v-for渲染的元素列表。当数据项的顺序改变时,Vue不会随之移动DOM元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。

为了给Vue一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的key:

<template>
    <h1>key属性添加到v-for当中</h1>
    <p v-for="(item,index) in names" :key="index">{{ item }}</p>
 </template>
<script>
    export default{
        data(){
            return{
                names:["计算机网络","计算机组成原理",'数据结构与算法','操作系统'] 
            }
        }
    }
</script>

温馨提示:

key在这里是一个通过v-bind绑定的特殊attribute

推荐在任何可行的时候为 v-for 提供一个key

key绑定的值期望是一个基础类型的值,例如字符串或number类型

Key的来源

不要使用index作为key的值,我们要确保每一条数据的唯一索引不会发生变化

<template>
    <h1>列表渲染</h1>
    <div v-for="(item,index) in result" :key="item.id" >
                    <!-- index表示id,没有可以直接写index,但是比如json返回数据有id的的情况,就要像这里表明 -->
        <p> {{ item.title }} </p>
        <p> {{ item.url }} </p>
    </div>
</template>
<script>
    export default{
        data(){
            return{
                    result:[{
                        id:"1",
                        title:"t1",
                        url:"https://www."
                    },{
                        id:"2",
                        title:"t2",
                        url:"https://www."
                    },{
                        id:"3",
                        title:"t3",
                        url:"https://www."
                    }
                ]
            }
        }
    }
</script>

http://www.kler.cn/a/502461.html

相关文章:

  • Java-数据结构-栈与队列(常考面试题与单调栈)
  • 设计一个利用事务特性可以阻塞线程的排他锁,并且通过注解和 AOP 来实现
  • python milvus 如何检查有多少个collection 以及多少个index,多少个database
  • Gateway 网关
  • 人工智能实验(四)-A*算法求解迷宫寻路问题实验
  • http和https有哪些不同
  • C++实现设计模式---策略模式 (Strategy)
  • Java语言的并发编程
  • 【运维专题】大数据面试笔试宝典之大数据运维面试(四)
  • 计算机视觉算法实战——车道线检测
  • 提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息
  • fast-crud select下拉框 实现多选功能及下拉框数据动态获取(通过接口获取)
  • Qt 5.14.2 学习记录 —— 십 QLabel
  • 32单片机从入门到精通之安全性与可靠性——防护措施(十八)
  • C#中的常用集合
  • SQLite安装与使用图文详解
  • P3884 [JLOI2009] 二叉树问题
  • openssl编译
  • 论文解析 | 基于语言模型的自主代理调查
  • 如何理解机器学习中的向量 ?
  • Mac 启动docke报错 com.docker.vmnetd【解决方案】
  • 在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)
  • vue实现Nprogress进度条功能
  • 新版本的IDEA如何解决Git分支显示为警告⚠<unknown>的问题
  • Android ValueAnimator根据屏幕刷率动态出帧/刷新,Kotlin
  • NLP中的问答(Question answering)