自学内容网 自学内容网

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>

原文地址:https://blog.csdn.net/m0_74977981/article/details/145103881

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!