【前端实现】在父组件中调用公共子组件:注意事项逻辑示例 + 将后端数组数据格式转换为前端对象数组形式 + 增加和删除行

【前端】在父组件中调用公共子组件的实现方法

  • 写在最前面
  • 一、调用公共子组件
    • 子组件CommonRow.vue
    • 父组件ParentComponent.vue
  • 二、实现功能
    • 1. 将后端数组数据格式转换为前端对象数组形式
      • 2. 增加和删除row
  • 三、小结


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

在这里插入图片描述

在前端开发中,尤其是使用框架如Vue.js或React.js时,通常会将一些重复使用的代码抽取为公共组件,以提高代码的可维护性和复用性。

本文将介绍如何在父组件中调用公共子组件,同时实现以下两个功能:

  1. 将后端数组数据格式转换为前端对象数组形式。
  2. 增加和删除row。

感谢熊老师hh,一下梳理清楚了
这里有两个需要注意的点:

  1. 父组件写数据调用,包括将后端数组数据格式转换为前端对象数组形式
  2. 公共子组件编写公用的方法,例如增加和删除行。
    原因:这样逻辑和细节更简约。就避免了父组件需要监听子组件的update:rowData事件,以便在行被删除时更新父组件的数据。

下面代码为逻辑示例。

一、调用公共子组件

这里我们使用的是Vue.js框架,我们可以创建一个名为CommonRow的公共子组件,并在父组件中调用它。

子组件CommonRow.vue

<template>
  <div>
      <button @click="addRow">Add Row</button>
    <div v-for="(row, index) in rows" :key="index" class="row">
      <input type="text" v-model="row.name" placeholder="Name">
      <input type="number" v-model="row.age" placeholder="Age">
      <button @click="removeRow(index)">Remove</button>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    rowData: Array
  },
  data() {
    return {
      rows: this.rowData
    };
  },
  methods: {
    addRow() {
      this.rows.push({ name: '', age: '' });
    },
    removeRow(index) {
      this.rows.splice(index, 1);
      this.$emit('update:rowData', this.rows);
    }
  }
}
</script>

<style scoped>
.row {
  display: flex;
  gap: 10px;
  margin-bottom: 10px;
}
</style>

父组件ParentComponent.vue

<template>
  <div>
    <CommonRow
      v-for="(row, index) in rows"
      :key="index"
      :rowData="row"
      :index="index"
    />
  </div>
</template>

<script>
import CommonRow from './CommonRow.vue';

export default {
  components: {
    CommonRow,
  },
  data() {
    return {
      rows: []
    }
  },
  methods: {
    addRow() {
      this.$refs.commonRowComponent.addRow();
    },
    removeRow(index) {
      this.$refs.commonRowComponent.removeRow(index);
    },
    fetchData() {
      // 假设后端返回的数据格式如下:
      const backendData = [
        { id: 1, firstName: 'John', years: 30 },
        { id: 2, firstName: 'Jane', years: 25 },
      ];

      // 转换为前端需要的格式
      this.rows = backendData.map(item => ({
        name: item.firstName,
        age: item.years
      }));
    }
  },
  created() {
    this.fetchData();
  }
}
</script>

<style scoped>
button {
  margin-bottom: 10px;
}
</style>


二、实现功能

1. 将后端数组数据格式转换为前端对象数组形式

在上述示例中,我们在fetchData方法中将后端返回的数据格式转换为了前端需要的格式。假设后端返回的数据格式为:

[
  { "id": 1, "firstName": "John", "years": 30 },
  { "id": 2, "firstName": "Jane", "years": 25 }
]

我们将其转换为前端所需的格式:

this.rows = backendData.map(item => ({
  name: item.firstName,
  age: item.years
}));

2. 增加和删除row

通过在父组件中定义addRowremoveRow方法,实现增加和删除行的功能:

  • addRow方法在rows数组中添加一个新对象。
  • removeRow方法通过索引删除数组中的对象。

子组件CommonRow通过@remove事件向父组件传递要删除的行的索引,父组件在接收到事件后调用removeRow方法进行删除操作。

三、小结

通过本文的示例,我们可以看到如何在父组件中调用公共子组件,并实现从后端获取数据、转换数据格式,以及增加和删除行的功能。

这种方法提高了代码的可复用性和可维护性,使我们的前端代码更加简洁和高效。


hello,我是 是Yu欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。

欢迎大家添加好友交流。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文解读】AGENTLESS:揭开基于LLM的软件工程代理的神秘面纱,重塑软件工程自动化新基线

&#x1f4dc; 文献卡 英文题目: Agentless: Demystifying LLM-based Software Engineering Agents;作者: Chunqiu Steven Xia; Yinlin Deng; Soren Dunn; Lingming ZhangDOI: 10.48550/arXiv.2407.01489摘要翻译: 大型语言模型&#xff08;LLM&#xff09;的最新进展显著推进…

nginx(三)—从Nginx配置熟悉Nginx功能

一、 Nginx配置文件结构 ... #全局块events { #events块... }http #http块 {... #http全局块server #server块{ ... #server全局块location [PATTERN] #location块{...}location [PATTERN] {...}}server{...}... #http全局块 …

智慧矿山建设规划方案(121页Word)

智慧矿山建设项目方案摘要 一、项目背景及现状分析 项目背景 随着信息技术的迅猛发展&#xff0c;智慧化、数字化已成为矿山行业转型升级的必然趋势。智慧矿山建设项目旨在通过集成先进的信息技术手段&#xff0c;实现对矿山生产、管理、安全等全过程的智能化监控与管理&…

Python统计实战:时间序列分析之一元线性回归预测和指数曲线预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 &#xff08;以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。&#xff09; 练习题 下表是某只股票…

大数的排列组合公式C代码

我们知道&#xff0c;计算排列A(n,m)和组合C(n,m)可以用先求阶乘的方式实现&#xff0c;但是当数很大时求阶乘很容易溢出&#xff0c;所以这里给出非阶乘的方式求排列组合 求排列 分母和分子可以抵消&#xff0c;最后代码如下 unsigned long long A(int n, int m) {unsigned…

代码随想录-Day49

300. 最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 …

进程控制-fork函数

一个进程&#xff0c;包括代码、数据和分配给进程的资源。 fork &#xff08;&#xff09;函数通过系统调用创建一个与原来进程几乎完全相同的进程&#xff0c;也就是两个进程可以做完全相同的事&#xff0c;但如果初始参数或者传入的变量不同&#xff0c;两个进程也可以做不同…

第十六章 Qt的文件处理操作详解

目录 一、基本文件操作 二、二进制文件读写 三、文本文件读写 四、操作例子 1、QTextStream的流操作符 一、基本文件操作 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。在所有的 I/O 设备中,文件 I/O 是最重要的部分之…

InfluxDB时序数据库基本使用介绍

1、概要介绍 1.1、时序数据库使用场景 所谓时序数据库就是按照一定规则的时间序列进行数据读写操作的数据库。它们常被用于以下业务场景&#xff1a; 物联网IOT场景&#xff1a;可用于IOT设备的指标、状态监控数据存取。IT建设场景&#xff1a;可用于服务器、虚拟机、容器的…

linux下的网络编程

网络编程 1. 网络基础编程知识1.1网络字节序问题1.2 常用socket编程接口1.2.1 sockaddr1.2.2 ip地址转换函数1.2.4 socket()1.2.3 bind()1.2.4 listen()1.2.5 accept()1.2.6 connect() 1.3 以udp为基础的客户端连接服务器的demo1.4 以udp为基础的的服务器聊天室功能demo1.5 基于…

解决vscode配置C++编译带有中文名称报错问题

在新电脑上安装vscode运行带有中文路径和中文名称的C代码时遇到报错 根据别人的教程将laugh.json文件中"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",改成了"program": "${fileDirname}\\output\\test.exe",&#x…

聊天广场(Vue+WebSocket+SpringBoot)

由于心血来潮想要做个聊天室项目 &#xff0c;但是仔细找了一下相关教程&#xff0c;却发现这么多的WebSocket教程里面&#xff0c;很多都没有介绍详细&#xff0c;代码都有所残缺&#xff0c;所以这次带来一个比较完整得使用WebSocket的项目。 目录 一、效果展示 二、准备工…

大数据中的常见数据问题:独断脏

想象你刚刚入职一家声称正在进行"数字化转型"的大型企业,担任大数据开发工程师。在入职的第一周,你满怀热情,迫不及待地想要大展拳脚,用你的技能来推动公司的数据驱动决策。 目录 大数据中的常见数据问题1. 独 - 数据孤岛2. 断 - 数据价值链断层3. 缺 - 标准、治理…

并口、串口和GPIO口区别

并口 并行接口,简称并口。并口采用的是25针D形接头。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错,目前,并行接口主要作为打印机端口等。 并口的工作模式 …

ctfshow web 36d 练手赛

不知所措.jpg 没啥用然后测试了网站可以使用php伪达到目的 ?filephp://filter/convert.base64-encode/resourcetest/../index.<?php error_reporting(0); $file$_GET[file]; $file$file.php; echo $file."<br />"; if(preg_match(/test/is,$file)){inclu…

安全测试之使用Docker搭建SQL注入安全测试平台sqli-labs

1 搜索镜像 docker search sqli-labs 2 拉取镜像 docker pull acgpiano/sqli-labs 3 创建docker容器 docker run -d --name sqli-labs -p 10012:80 acgpiano/sqli-labs 4 访问测试平台网站 若直接使用虚拟机&#xff0c;则直接通过ip端口号访问若通过配置域名&#xff0…

【论文笔记】UniST:通用预训练城市时空预测模型

目录 写在前面1. 通用时空模型的挑战与能力特性2. 构建通用时空模型UniST2.1 大规模时空预训练2.2 时空知识规则引导提示学习 3. UniST的实验与分析3.1 模型预测效果3.2其他实验分析 写在前面 文章标题&#xff1a;UniST: A Prompt-Empowered Universal Model for Urban Spati…

基于SpringBoot+Vue的招生管理系统(带1w+文档)

基于SpringBootVue的招生管理系统(带1w文档&#xff09; 通过招生管理系统的研究可以更好地理解系统开发的意义&#xff0c;而且也有利于发展更多的智能系统&#xff0c;解决了人才的供给和需求的平衡问题&#xff0c;招生管理系统的开发建设&#xff0c;由于其开发周期短&…

linux centos 安装niginx并且添加ssl(https)模块

文章目录 前言一、nginx安装教程1.流程步骤 总结 前言 一、nginx安装教程 1.流程步骤 代码如下&#xff08;示例&#xff09;&#xff1a; 1.先下载linux安装包 2.解压安装命令 sudo tar -zxvf nginx-1.20.1.tar.gz3.进入解压后的目录 sudo cd nginx-1.20.14.安装 sudo y…

AntDesign上传组件upload二次封装+全局上传hook使用

文章目录 前言a-upload组件二次封装1. 功能分析2. 代码详细注释3. 使用到的全局上传hook代码4. 使用方式5. 效果展示 总结 前言 在项目中&#xff0c;ant-design是我们常用的UI库之一&#xff0c;今天就来二次封装常用的组件a-upload批量上传组件,让它用起来更方便。 a-uploa…