21 Vue3中使用v-for遍历对象数组

news2024/12/25 8:53:48

概述

使用v-for遍历对象数组在真实的开发中也属于非常常见的用法,需要重点掌握。

因为目前流行的是前后端分离开发,在前后端分离开发中,最常需要处理的就是对象数组类型的数据了。

比如,将员工信息渲染到表格中。

这节课我们就来使用v-for渲染对象数组的方式实现一下这个案例。

基本用法

我们创建src/components/Demo20.vue,在这个组件中,我们要:

  • 1:定义employees,表示员工对象数组,其中每个元素有id、name、age、gender、salary字段。
  • 2:创建一个表格
  • 3:在表格中使用v-for遍历employees并渲染
  • 4:稍微用CSS样式美化一下表格

代码如下:

<script setup>
const employees = [
  {
    id: 1,
    name: "张三",
    age: 23,
    gender: "男",
    salary: 30000,
  },
  {
    id: 2,
    name: "李四",
    age: 23,
    gender: "男",
    salary: 28000,
  },
  {
    id: 3,
    name: "王五",
    age: 23,
    gender: "男",
    salary: 18000,
  },
]
</script>
<template>
  <div>
    <table>
      <thead>
      <tr>
        <th>#</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年龄</th>
        <th>薪资</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(employee, index) in employees" :key="employee.id">
        <td>{{ index + 1 }}</td>
        <td>{{ employee.name }}</td>
        <td>{{ employee.gender }}</td>
        <td>{{ employee.age }}</td>
        <td>{{ employee.salary }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>
<style>
table {
  width: 500px;
  text-align: center;
  border-collapse: collapse;
}

tr, td, th {
  border: 1px solid #ccc;
}

th, td {
  padding: 5px;
}
</style>

接着,我们修改src/App.vue,引入Demo20.vue并进行渲染:

<script setup>
import Demo from "./components/Demo20.vue"
</script>
<template>
  <h1>欢迎跟着Python私教一起学习Vue3入门课程</h1>
  <hr>
  <Demo/>
</template>

然后,我们浏览器访问:http://localhost:5173/

在这里插入图片描述

完整代码

package.json

{
  "name": "hello",
  "private": true,
  "version": "0.1.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build"
  },
  "dependencies": {
    "vue": "^3.3.8"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.5.0",
    "vite": "^5.0.0"
  }
}

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
})

index.html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + Vue</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>
  </body>
</html>

src/main.js

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

src/App.vue

<script setup>
import Demo from "./components/Demo20.vue"
</script>
<template>
  <h1>欢迎跟着Python私教一起学习Vue3入门课程</h1>
  <hr>
  <Demo/>
</template>

src/components/Demo20.vue

<script setup>
const employees = [
  {
    id: 1,
    name: "张三",
    age: 23,
    gender: "男",
    salary: 30000,
  },
  {
    id: 2,
    name: "李四",
    age: 23,
    gender: "男",
    salary: 28000,
  },
  {
    id: 3,
    name: "王五",
    age: 23,
    gender: "男",
    salary: 18000,
  },
]
</script>
<template>
  <div>
    <table>
      <thead>
      <tr>
        <th>#</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年龄</th>
        <th>薪资</th>
      </tr>
      </thead>
      <tbody>
      <tr v-for="(employee, index) in employees" :key="employee.id">
        <td>{{ index + 1 }}</td>
        <td>{{ employee.name }}</td>
        <td>{{ employee.gender }}</td>
        <td>{{ employee.age }}</td>
        <td>{{ employee.salary }}</td>
      </tr>
      </tbody>
    </table>
  </div>
</template>
<style>
table {
  width: 500px;
  text-align: center;
  border-collapse: collapse;
}

tr, td, th {
  border: 1px solid #ccc;
}

th, td {
  padding: 5px;
}
</style>

启动方式

yarn
yarn dev

浏览器访问:http://localhost:5173/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1326509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何建立一套完整的私域运营体系?

所有人都告诉你&#xff0c;今年必须做私域&#xff0c;但从没有人说清楚怎么做私域。你以为做私域就像瑞星咖啡一样&#xff0c;随便拉个群、发发券就能年入100个小目标。或者你认为最后还是微商最有效&#xff0c;每天狂刷100条朋友圈。但这样的私域一定活不过30天。因为没有…

回顾丨2023 SpeechHome 第三届语音技术研讨会

下面是整体会议的内容回顾&#xff1a; 18日线上直播回顾 18日上午9:30&#xff0c;AISHELL & SpeechHome CEO卜辉宣布研讨会开始&#xff0c;并简要介绍本次研讨会的筹备情况以及报告内容。随后&#xff0c;CCF语音对话与听觉专委会副主任、清华大学教授郑方&#xff0c…

oracle定位造成卡顿的SQL语句

先查询阻塞的会话号 select event,machine,sql_id,program,blocking_session from dba_hist_active_sess_history where SAMPLE_TIME between TO_TIMESTAMP (2021-08-25 15:25:00, YYYY-MM-DD HH24:MI:SS) and TO_TIMESTAMP (2021-08-25 15:30:00, YYYY-MM-DD HH24:MI:SS) and …

【Linux】进程周边006之进程地址空间

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.程序地址空间 1.1验证地址…

Git 储藏(stash)用法

储藏的基本用法 保存当前的更改 1、查看储藏 git stash list2、更改保存到一个储藏中&#xff1a; git stash save "info"其中&#xff0c;“info” 是可选的注释信息&#xff0c;可以简要描述这个储藏的内容。 3、恢复之前保存的更改 可以使用下面的命令将之前…

Qt之判断一个点是否在多边形内部(射线法)

算法思想: 以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。如果为奇数,Q在多边形内;如果为偶数,Q在多边形外。计数的时候会有一些特殊情况。这种方法适用于任意多边形,不需要考虑精度误差和多边形点给出的顺序,时间复杂度为O(n)…

Java 第14章 集合 课堂练习

文章目录 HashSet判断是否两次add都能加入成功HashSet编码遍历HashMap判断输出中是否有"abc" HashSet判断是否两次add都能加入成功 HashSet set new HashSet(); set.add(new String("hsp")); set.add(new String("hsp"));第一次可以&#xff0…

HTML期末复习,重要知识点摘录

HTML复习知识点摘录 1.html基本模板 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><h1>我的第一个标题</h1> <p>我的第一个段落。…

Docker 文件和卷 权限拒绝

一 创作背景 再复制Docker影像文件或访问Docker容器内已安装卷上的文件时我们常常会遇到&#xff1a;“权限被拒绝”的错误&#xff0c;在此&#xff0c;您将了解到为什么会出现“权限被拒绝”的错误以及如何解决这个问题。 二 目的 在深入探讨 Docker 容器中的 Permission De…

如何使用Docker搭建青龙面板并结合内网穿透工具发布至公网可访问

文章目录 一、前期准备本教程环境为&#xff1a;Centos7&#xff0c;可以跑Docker的系统都可以使用。本教程使用Docker部署青龙&#xff0c;如何安装Docker详见&#xff1a; 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 正文…

TikTok获客工具开发必不可少的功能!

随着TikTok在全球范围内的走红&#xff0c;越来越多的企业开始关注这个平台并尝试从中获取客户&#xff0c;为了满足这一需求&#xff0c;市场上涌现出了许多TikTok获客工具。 这些工具的功能各有千秋&#xff0c;但有一些功能是必不可少的&#xff0c;本文将为您介绍TikTok获…

FMCW雷达仿真:基于L形阵列4D点云获取

摘要&#xff1a;本期内容为3D点云目标获取的延续工作&#xff0c;在距离、速度、方位角估计的基础上&#xff0c;通过设计L型阵列结构&#xff0c;进一步实现目标俯仰角的估计&#xff0c;最终实现目标4-D点云的获取。首先&#xff0c;通过中频信号建立仿真信号模型&#xff0…

MySQL中替换字符串中的指定部分之REPLACE函数

REPLACE函数是用来替换字符串中的指定部分内容的。在本文中&#xff0c;将介绍如何在MySQL中使用REPLACE函数进行字符串替换 REPLACE函数的语法&#xff1a; REPLACE(str, search_str, replace_str) 其中&#xff0c;str是要进行替换操作的字符串&#xff0c;search_str是要搜…

WebGL开发虚拟旅游应用

WebGL可以用于开发虚拟旅游应用&#xff0c;提供用户在浏览器中探索虚拟景点和环境的交互体验。以下是在WebGL中开发虚拟旅游应用的一般流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.需求分析…

用于电磁炉、电压力锅等小家电的LED电源芯片型号汇总表

LED电源芯片是一种用于电磁炉、电压力锅等小家电的关键元器件。它具有高效、稳定、可靠的特点&#xff0c;能够满足小家电对电源的各种需求。 首先&#xff0c;LED电源芯片具有高效能的特点。它采用先进的功率转换技术&#xff0c;能够将输入的电压稳定地转换为输出所需的电压…

Redis原理之网络通信协议笔记

目录 1. RESP协议 ​2. 自定义Socket连接Redis 1. RESP协议 2. 自定义Socket连接Redis public class MyRedisClient {static Socket s;static PrintWriter writer;static BufferedReader reader;static Object obj;public static void main(String[] args) {try {// 1.建立连…

使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践

作者&#xff1a;森元 需求背景 新业务上线前&#xff0c;我们通常需要对系统的不同中间件进行压测&#xff0c;找到当前配置下中间件承受流量的上限&#xff0c;从而确定上游链路的限流规则&#xff0c;保护系统不因突发流量而崩溃。阿里云 PTS 的 JMeter 压测可以支持用户上…

ros2/ros 4轮2驱机器人xacro/urdf文件示例代码

这个实验中最重要的是&#xff1a;colcon build 之后要记得source install/setup.bash.否则修改的文件是不会更新的。知道了吧 <robot name"half" xmlns:xacro"http://wiki.ros.org/wiki/xacro"><xacro:property name"PI" value"3…

紫光展锐T820与百度飞桨完成I级兼容性测试 助推端侧AI融合创新

近日&#xff0c;紫光展锐高性能5G SoC T820与百度飞桨完成I级兼容性测试&#xff08;基于Paddle Lite工具&#xff09;。测试结果显示&#xff0c;双方兼容性表现良好&#xff0c;整体运行稳定。这是紫光展锐加入百度“硬件生态共创计划”后的阶段性成果。 本次I级兼容性测试完…

什么猫粮比较好?5款自用质量好的主食冻干排行榜

冻干猫粮因其高营养和适口性&#xff0c;受到了众多铲屎官们的喜爱和追捧。冻干猫粮的喂养方式非常简单&#xff0c;可以直接喂食&#xff0c;也可以将冻干复水后喂食&#xff0c;根据猫咪的不同喜好可以选择不同的喂养方式。然而&#xff0c;有些铲屎官在选择冻干猫粮时可能会…