美文网首页
[vue3快速入门] 4.vue中的列表循环

[vue3快速入门] 4.vue中的列表循环

作者: 林哥学前端 | 来源:发表于2021-09-10 08:07 被阅读0次

在日常开发中,列表和表格之类需要循环渲染的功能几乎天天都要开发,比如商品列表、数据报表、好友列表都要用到循环
在以前的原生或者jQuery开发中,我们要通过for循环拼接字符串,然后再通过dom操作插入到dom中,拼过的小伙伴都知道多痛苦
现在有了vue,一切都变得很简单,现在咱们就开始学习vue里如果使用循环
比如说现在我们有一个数组,里面有几个超级英雄

data() {
  return {
     list: ['钢铁侠', '蜘蛛侠', '美国队长', '蝙蝠侠'],
  }
}

现在我们要把这些超级英雄渲染到一个ul里,显示出来,要用到一个新的指令v-for,其实v-for的语法和js原生的for in语法非常像

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>vue3</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="https://www.unpkg.com/vue@next"></script>
    <script>
      // 列表循环
      const vueApp = Vue.createApp({
        data() {
          return {
            list: ['钢铁侠', '蜘蛛侠', '美国队长', '蝙蝠侠'],
          }
        },
        template: `
          <ul>
              <li v-for="item in list" >{{item}}</li>  
          </ul>
        `,
      })
      vueApp.mount('#app')
    </script>
  </body>
</html>

item就是循环时数组里的一项,我们把item通过双花括号绑定,显示在li中,打开浏览器就可以看到列表已经渲染出来了
在循环中,我们要拿到索引也是可以的,比如说现在要给超级英雄加上一个序号,就可以使用索引

<ul>
  <li  v-for="(item,index) in list">这是第{{index+1}}个超级英雄 : {{item}}</li>  
 </ul>

根据我们程序员的传统,index索引是从0开始的,所以显示的时候我们给它加1,这样显示的就是1 2 3 4了
index在这里可以理解为一个变量,把它的名字换成别的也是可以的,只要写的位置对行了,比如换成i也是一样的

<ul>
  <li  v-for="(item,i) in list">这是第{{i+1}}个超级英雄 : {{item}}</li>  
 </ul>

我们仔细观察,发现这个超级英雄列表里有一个跟别人不一样,我们现在决定在页面中不显示他,根据上节课的知识,我们可以使用v-if,于是把代码改成这样

<ul>
  <li v-for="(item,i) in list" v-if="item!=='蝙蝠侠'">这是第{{i+1}}个超级英雄 : {{item}}</li>  
</ul>

我们用v-if判断,如果当前循环里的这个item不是蝙蝠侠,才显示
打开浏览器发现,没有效果,蝙蝠侠还是显示出来了
因为它们处于同一节点,v-if 的优先级比 v-for 更高,这意味着 v-if 将没有权限访问 v-for 里的变量

那要怎么写呢
我们可以多套一层元素,外层元素上写v-for,内层元素上写v-if

 <ul>
  <template v-for="(item,i) in list">
    <li v-if="item!=='蝙蝠侠'">这是第{{i+1}}个超级英雄 : {{item}}</li>  
  </template>
</ul>

template可以理解为是一个虚拟标签,我们可以写出来,当做一个div使用,但是vue不会吧template标签渲染到dom里,我们打开开发者工具,发现并没有template这个标签。
这样对于vue来说v-for和v-if没有在一个标签上,所以两个都生效了,我们最后结果就是只显示了三个超级英雄。
完整代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>vue3</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="https://www.unpkg.com/vue@next"></script>
    <script>
      // 列表循环
      const vueApp = Vue.createApp({
        data() {
          return {
            list: ['钢铁侠', '蜘蛛侠', '美国队长', '蝙蝠侠'],
          }
        },
        template: `
          <ul>
            <template v-for="(item,i) in list">
              <li v-if="item!=='蝙蝠侠'">这是第{{i+1}}个超级英雄 : {{item}}</li>  
            </template>
          </ul>
        `,
      })
      vueApp.mount('#app')
    </script>
  </body>
</html>

本节教程就到这里,大家要自己动手练一练。

相关文章

  • [vue3快速入门] 4.vue中的列表循环

    在日常开发中,列表和表格之类需要循环渲染的功能几乎天天都要开发,比如商品列表、数据报表、好友列表都要用到循环在以前...

  • Python基础(8) - 快速调换字典中的key和value

    如何快速调换字典中的key,value 使用for循环 如何用循环快速生成一个从0到100的列表 使用for循环 ...

  • python第七天

    一、python中的生成表达式 1. 列表推导式 用途:快速生成一个列表格式 与普通for循环创建列表进行对比: ...

  • iOS-循环遍历对比

    for循环 for循环入门常用,可以正序、逆序查询数据。 for in 循环 for in 遍历,又称快速遍历,与...

  • Vue3实现列表循环

    今天小编和大家一起在Vue的路上探索,要实现的功能是这样的。现将默认 数组内的渲染到页面上,然后点击按钮之后,将文...

  • [vue3进阶] 0.vue-devtools的安装和使用

    在[vue3快速入门]中,我们尽快把vue的基本用法学习了一遍,但是实际工作中经常遇到这样那样的需求,用vue最基...

  • 快速入门vue3

    一.简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) 和vue2相比它的...

  • 05. ElasticSearch极速入门

    ElasticSearch操作 一、ES快速入门 1). 创建索引库 逻辑概念,包括了分词列表以及文档列表,,同一...

  • MarkDown笔记

    [TOC] 快速入门 支持6级标题 有序列表1 有序列表2 无需列表 无序列表 这样可以加粗这样可以斜体这样可以删...

  • 微信小程序入门教程--列表渲染多层嵌套循环及wx:key的使用

    前言 入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的...

网友评论

      本文标题:[vue3快速入门] 4.vue中的列表循环

      本文链接:https://www.haomeiwen.com/subject/ppxwwltx.html