Vue研习录(04)——列表渲染详解及示例分析

2023-11-01

Vue研习录(04)——列表渲染详解及示例分析


版权声明

  • 本文原创作者:清风不渡
  • 博客地址:https://blog.csdn.net/WXKKang

  重拾前端记忆,记录学习笔记,现在进入列表渲染部分

一、v-for

  使用v-for可以把一个数组映射一组元素
  我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据的数组,而 item 是迭代项的别名:

<template>
  <div class="hello">
    <ul>
      <li v-for="item in items">{{ item.message }}</li>
    </ul>

  </div>
</template>

<script>
export default {
  data() {
    return {
      items : [{message:'HTML'},{message:'CSS'},{message:'JS'}]
    }
  }
}
</script>

  结果如下:

在这里插入图片描述

二、维护状态

  当Vue正在更新使用v-for 渲染的元素列表时,它默认使用”就地更新”的策略。如果数据项的顺序被改变,Vue将不会移动DOM元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引|位置正确渲染。
  为了给Vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一的key attribute,如下。

<template>
  <div class="hello">
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.message }}</li>
    </ul>

  </div>
</template>

<script>
export default {
  data() {
    return {
      items : [
        {
          id : '0001',
          message:'HTML'
        },
        {
          id : '0002',
          message:'CSS'
        },
        {
          id : '0003',
          message:'JS'
        }]
    }
  }
}
</script>

  也可以为,但最好为上面这个:

<template>
  <div class="hello">
    <ul>
      <li v-for="(item,index) in items" :key="index">{{ item.message }}</li>
    </ul>

  </div>
</template>

<script>
export default {
  data() {
    return {
      items : [
        {
          message:'HTML'
        },
        {
          message:'CSS'
        },
        {
          message:'JS'
        }]
    }
  }
}
</script>

三、v-for 与对象

  你也可以使用 v-for 来遍历一个对象的所有属性。遍历的顺序会基于对该对象调用 Object.keys() 的返回值来决定,示例如下:

<template>
  <div class="hello">
    <ul>
      <li v-for="(value,key,index) in user">{{ index }} : {{ key }} : {{ value }}</li>
    </ul>

  </div>
</template>

<script>
export default {
  data() {
    return {
      user: {
      name: 'TOM',
      age: '19',
      occupation: 'teacher'
      }
    }
  }
}
</script>

  结果如下:

在这里插入图片描述

四、在 v-for 里使用范围值

  v-for 可以直接接受一个整数值。在这种用例中,会将该模板基于 1…n 的取值范围重复多次。

<span v-for="n in 10">{{ n }}</span>

同样,v-for也可以用在<template>元素上
不建议与v-if同时出现,因为这二者的优先级不明显

  例如,当它们同时存在于一个节点上时,v-if 比 v-for 的优先级更高。这意味着 v-if 的条件将无法访问到 v-for 作用域内定义的变量别名:

<!--
 这会抛出一个错误,因为属性 todo 此时
 没有在该实例上定义
-->
<li v-for="todo in todos" v-if="!todo.isComplete">
  {{ todo.name }}
</li>

在外新包装一层 <template> 再在其上使用 v-for 可以解决这个问题 (这也更加明显易读):

<template v-for="todo in todos">
  <li v-if="!todo.isComplete">
    {{ todo.name }}
  </li>
</template>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue研习录(04)——列表渲染详解及示例分析 的相关文章

  • jQuery:计算数百个元素的点击次数

    这是我在SO 的第一个问题 基本上 我的页面上有大量元素 我想计算并显示用户单击每个元素的次数 但为此我需要为每个元素定义变量 难道就没有更简单的方法吗 对于一个元素 var counter 0 container on click fun
  • JS - 使用变量设置 Div 背景颜色

    基本上 我的一个朋友正在练习 JS 他想到了一个测试基本站点的想法 所以我说我们将进行一场比赛来完成它 此时我们都遇到了错误 我们在 JS 中创建了一种颜色 但是当我们需要输出时它就不起作用了 我有这个 document getElemen
  • Javascript正则表达式单引号

    我的正则表达式是 var re a z A Z 1 15 我想允许这样 单引号 我怎样才能做到这一点 例如 您可以使用以下正则表达式来允许类似的字符串abcd dfgh A Za z A Za z
  • Bootstrap 表单助手未选择完整的国家/地区名称

    我添加了引导表单助手来列出国家及其州 最初 它根本没有选择国家名称 但我设法用 jQuery 检索国家 地区名称 但它没有显示完整名称 这是表单的完整代码 div class signup form div class container
  • 如何使用javascript获取位于范围内的节点?

    我正在尝试获取范围对象内的所有 DOM 节点 最好的方法是什么 var selection window getSelection what the user has selected var range selection getRang
  • 选择移动 Web HTML5 框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 WinJS 进行数据绑定与淘汰赛一样强大?

    我最近开始使用 HTML CSS JS 开发 Win8 应用程序 两周后 出现了有关 WinJS 数据绑定的问题 是否可以通过 WinJS 执行数据绑定 就像使用 WinJS 一样强大 knockout js WinJS 可以做 knock
  • 仅 HTTP 支持跨源请求,但不支持跨域

    我使用此代码发出 AJAX 请求 userBarSignup click function get C xampp htdocs webname resources templates signup php params function
  • 如何在一个页面中使用vuetify.css和bootstrap?

    我想同时使用vuetify min css文件夹和bootstratp min css文件夹 Bootstrap 是在布局页面上定义的 我需要在另一个页面上使用 vuetify min css 有什么办法可以同时使用它们吗 这里有多种解决方
  • 使用 Javascript 从 CSS 文件中提取颜色

    我正在上传一个 css 文件 希望从中记录引用的每种颜色 所以如果 css 文件有 background color ffffff color 000000 我希望能够创建一个包含以下内容的列表 ffffff 000000 这样做的最好方法
  • Promise.defer 的正确模式是什么?

    我正在使用 TypeScript 和async await来表示异步工作流程 该工作流程的一部分是调用 Web Worker 并在其回调结果时继续 在 C 中 我会创建一个TaskCompletionSource await its Tas
  • jQuery.getJSON:如何避免在每次刷新时请求 json 文件? (缓存)

    在此示例中 您可以看到生成的 HTML 列表 每次刷新时 脚本都会请求数据文件 ajax test json 并再次构建列表 生成的文件 ajax test json 被静态缓存 但是如何避免在每次刷新时请求此文件 source jquer
  • Javascript树遍历算法

    我需要帮助以深度优先的方式遍历树结构 我无法想出一个算法来正确地做到这一点 我的输入是这样的 A B C 1 2 a b c d 输出应采用以下形式 A 1 a A 1 b A 1 c A 1 d A 2 a A 2 b A 2 c A 2
  • javascript 使用 onclick 创建按钮

    我正在尝试使用 javascript 创建一个具有 onclick 事件的按钮 该事件调用 head 中定义的函数 该函数接收相对于按钮的 dom 对象作为参数 我该怎么做呢 ex
  • AngularJS 使用 $apply 而不使用 $scope

    我开始使用 AngularJS 并且接受了用它来编写控制器的约定 而不是用 scope 所以我的控制器看起来像这样 myApp controller SomeController function this myModel id 1 nam
  • JavaScript 对象引用缓存

    我们的代码库中有很多对象 它们的名称空间是为了避免冲突 Example App local view MyView 在我在代码库中看到的大多数地方 我们使用完整路径来获取对对象的引用 并且这在同一函数中重复多次 Example functi
  • 如何在光标下的所有元素上调用 mouseover?

    我有一个网络应用程序 每次单击时都会创建一个点 见下文 当我将鼠标悬停在一堆点上时 我希望光标下的每个点都会触发 mouseover 或 mouseenter 事件 然而 只有一个事件被触发 即堆栈 顶部 的点的事件 当鼠标移动到一堆多个点
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 如何获取 RxJSSubject 或 Observable 的当前值?

    我有 Angular 2 服务 import Storage from storage import Injectable from angular2 core import Subject from rxjs Subject Inject
  • Three.js - 在代码中包含网格数据

    我有这个 Three js 代码 其中 JSON 加载器从文件 models mountain json 加载网格 var Three new function this scene new THREE Scene this camera

随机推荐

  • 作用域链的理解

    一 作用域 作用域又分为了 全局作用域 和 函数作用域 ES6 之前 JavaScript 没有块级作用域 只有全局作用域和函数作用域 ES6 的到来 为我们提供了 块级作用域 可通过新增命令 let 和 const 来体现 全局作用域 在
  • Hexo+next主题美化静态博客

    前言 需要在Hexo下配置next主题 Hexo配置next主题教程 点我跳转 更改配置以后使用素质三连 hexo clean hexo g hexo s即可本地看到效果 hexo clean hexo g hexo s 注 部分参考自互联
  • CSS3有趣的渐变色

    程序设计之道无远弗届 御晨风而返 杰佛瑞 詹姆士 这里给大家分享几个有趣的渐变色 用来丰富页面 一 背景色渐变 经常用的就是给背景色增加渐变效果 这里的语法顺序不要错 牵扯到优雅降级和渐进增强 标准语法写到最后也是为了兼容各个版本浏览器 让
  • curl命令的使用

    curl是利用URL语法在命令行方式下工作的开源文件传输工具 1 CURL URL 获取当个网页源码 默认将输出打印到标准输出中 curl www baidu com 2 CURL o O选项保存下载的文件到指定的文件中 o 将文件保存为命
  • AI工程师职业规划指南——中科院大牛告诉你如何成为一名语音识别工程师

    语音识别基础知识 数学与统计学 数学是所有学科的基础 其中的高等数学 数理方程 泛函分析等课程是必要的基础知识 概率论与数理统计也是语音识别的基础学科 声学与语言学 声学基础 理论声学 声学测量等是声学方面的基础课程 有助于了解更多声学领域
  • ElasticSearch学习笔记

    一 ES核心概念 elasticsearch 是面向文档的 一切都是 Json ES关系型数据库的对比记忆 ElasticSearch 关系型数据库 索引 indices 数据库 database 类型 types 表 tables 文档
  • Hive 数据仓库基础应用---第一篇

    hive 的数据定义语句 DDL 创建数据库 语法格式如下 CREATE DATABASE IF NOT EXITS database name COMMENT database comment LOCATION hdfs path WIT
  • arm架构安装docker-compose

    先安装好Docker 华为云arm架构安装Docker arm架构下安装docker compose 官网地址 https github com docker compose releases 官方没有提供arm架构的包 自己去找arm架构
  • 迅雷下载器无限制版_无敏感_无限速

    迅雷下载器5 8 下载链接 链接 https pan baidu com s 1ZYf1aRwZvW4PUT7qO0lKIg 提取码 if5x 速度如图 转载于 https www cnblogs com yzhyingcool p 109
  • CSS使网页适应不同屏幕大小(最实用的rem基础屏幕的适配方案)

    先看代码 复制使用即可 以下代码均可复制粘贴使用 我将以注释的形式解释代码左右 如您满意请给莫成尘点个Fabulous 牛顿说过 我之所以看得远 是因为我站在巨人的肩膀上 我们充分借鉴了element antd等的方案来适配 需 要 注 意
  • kafka消息删除机制

    kafka过期消息删除过程 有时候总觉得我的消息没到7天就被删除了 我还以为是我的kafka配置没有生效 了解到 kafka删除机制后才恍然大悟 kafka消息首先由用户设定一个或多个partition 每个partition中kafka会
  • 光圈

    镜头上写 1 1 8 说明该镜头的最大光圈是f 1 8 F number 光圈值 F number 指的是focal length number aperture 光圈 光圈指得是镜头中间开孔的大小 光圈的作用在于决定镜头的进光量 光圈值越
  • 机器学习基础篇(十二)——多层感知机

    机器学习基础篇 十二 多层感知机 一 概述 多层感知机 MLP Multi Layer Perceptron 由感知机 PLA Perceptron Learning Algorithm 推广而来 它最主要的特点是有多个神经元层 因此也叫深
  • 大咖云集,EI稳定检索,第14届机器学习与计算国际会议(ICMLC 2022)

    14th ICMLC 2022 第14届机器学习与计算国际会议 2月18 21日 中国广州 关于我们 机器学习是人工智能及模式识别领域的共同研究热点 其理论和方法已被广泛应用于解决工程应用和科学领域的复杂问题 为了给机器学习与计算研究领域的
  • 自带win10系统换win7的那些坑

    自带win10系统换win7的那些坑 这两天真是经历了一个换系统的巨坑 如果说这次换系统是一部历史的话那也一定是一部血泪史 今日4000多字的记录会把这部血泪史中的血和泪一一道出 不为别的只为 前车之鉴后事之师 更多内容请关注微信公众号 u
  • QTableView如何插入图片(ICON)在文字的右边

    QTableView如何插入图片 ICON 在文字的右边方法一 QStyledItemDelegate 继承自 QAbstractItemDelegate 主要用于为 Model View 中的数据项提供显示和编辑功能 采用继承QStyle
  • JavaScript运算符优先级

    JavaScript 运算符优先级 是描述在计算机运算计算表达式时执行运算的先后顺序 先执行具有较高优先级的运算 然后执行较低优先级的运算 例如 我们常说的先执行相乘和除 再执行加减运算 JavaScript 运算符 圆括号处理Javasc
  • yarn.lock、package-lock.json、npm-shrinkwrap.json的区别

    总的来说yarn lock和package lock json起的作用相同 只不过yarn是默认的 npm到5以后才会出现lock package lock json是npm5的新特性 也不向前兼容 如果npm版本是4或以下 那得用npm
  • JavaScript HTML DOM

    JavaScript HTML DOM 文档对象模型 是一种用于访问和操作HTML文档元素的编程接口 它将HTML文档表示为一个树形结构 使开发人员可以使用JavaScript来操作和修改HTML元素 属性 样式和事件 通过使用HTML D
  • Vue研习录(04)——列表渲染详解及示例分析

    Vue研习录 04 列表渲染详解及示例分析 版权声明 一 v for 二 维护状态 三 v for 与对象 四 在 v for 里使用范围值 版权声明 本文原创作者 清风不渡 博客地址 https blog csdn net WXKKang