从零实现一套低代码(保姆级教程) --- 【14】实现头像组件和徽标容器

前话

文章开始前,先解决一下之前的某个错误。

在InputComponent中,如果是弹窗类型的组件,我们点击按钮会把ModalComponent组件弹出来。同时,我们要把key传进去。

  return (
    <div>
      {getComponent()}
      // 把valueKey穿过去
      <ModalComponent valueKey={value}  openModal={openModal} setOpenModal={setOpenModal}/>
    </div>
  )

为什么,因为不同组件的icon属性是不一样的,Icon图标是type,Button是type,其他的可能就叫icon。所以这里是写错了,应该将key传过来,然后再做处理,来到IconSelect文件下:

  useEffect(() => {
    if(selectNode) {
      // 这里该node的valueKey
      setSelectIcon(selectNode[valueKey as keyof typeof selectNode])
    }
  // eslint-disable-next-line
  },[openModal])

  const handleOk = () => {
    if(selectNode) {
      // 这里该node的valueKey
      selectNode[valueKey as keyof typeof selectNode] = selectIcon;
    }
    Store.dispatch({type: 'changeComList', value:comList})
    setOpenModal(false)
    setSelectIcon('')
  }

摘要

在上一篇中,我们把一些简单的组件都实现了,从这一篇开始,我们来实现那些比较复杂的组件。

如果你是一个前端开发,应该很经常看见到头像上面有一个消息提示:
在这里插入图片描述
本篇我们就要实现出这个效果。

我们先来分析一下,头像组件肯定很好写,只需要按照步骤添加即可。那这个徽标应该怎么写呢?应该发现我的标题已经写了,我们将其以容器的方式实现。

然后头像作为它的子组件,这样就能实现出二者一体的效果了。

如果你是第一次看到这一篇文章, 建议先看一下第一节内容:
从零实现一套低代码(保姆级教程) — 【1】初始化项目,实现左侧组件列表

我们开始实现这两个组件

在这里插入图片描述

1.实现头像组件

因为我们的分组已经比较多了,所以我们把components文件夹归类一下:

在这里插入图片描述
按照组件的类型归类。

然后我们实现头像Avatar组件
这里注意的是我开头修改的部分,这样你在实现头像的图标属性就不会报错。

在这里插入图片描述
相关的代码提交在github上:
https://github.com/TeacherXin/XinBuilder2
commit: 第十四节: 实现头像Avatar组件,并将components文件夹分组

2.实现徽标容器

因为我们实现的是一个容器,而它作用于它的子节点(例如一个头像)。所以这个容器是不可见的,为了在设计态中,方便使用,我们可以给它一个默认宽高和Border。

import { Badge as AntBadge } from 'antd'

export default function Badge(props: any) {
  const { children, color, dot, size, status, count } = props
  return (
  	// 给一个默认宽高
    <div style={{width:'80px', height:'80px', border:'1px solid green'}}>
        {
          children && children.map((item: any) => {
            return <AntBadge color={color} dot={dot} size={size} status={status} count={count || 5}>
              {item}
          </AntBadge>
          })
        }
    </div>
  )
}

剩下的部分,只需要按照Form表单的实现过程,然后一步步写即可。

最终,我们来看一下二者组合的效果:

在这里插入图片描述
这可能会有一个疑问,我并不想给这个容器一个默认的宽高和边框,我不需要让它展示啊。

这里要区分设计态和运行态,在运行态我们不应该展示,但是在设计态,为了方便操作,我们还是要将其展示出来的。后面再运行态我们就不会再给他将边框展示出来了。

相关的代码提交在github上:
https://github.com/TeacherXin/XinBuilder2
commit: 第十四节: 实现徽标容器组件

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

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

相关文章

Java集合框架和泛型

1.Java集合框架 架构图&#xff1a; Java的集合框架是一组用于存储和操作数据的类和接口。它提供了各种数据结构&#xff0c;如列表、集合、映射等&#xff0c;以及用于操作这些数据结构的算法和工具。Java集合框架位于Java.util包中&#xff0c;并且是Java编程中常用的核心组…

软件质效领航者!ONES 获中国信通院「软件质效技术创新」优秀案例奖

近日&#xff0c;由中国信息通信研究院、中国通信标准化协会联合主办的 2023 系统稳定性与精益软件工程大会-AI 赋能软件质效专场暨云上软件工程社区年会在北京召开&#xff0c;会上正式公布了第二届「软件质效领航者」优秀案例的评选结果。 凭借产品及服务的成熟度、典范性和…

thinkcmf 配置移动端模板

1.找到tinkcmf/data/config/template.php 文件 cmf_moblie_default_theme > cffff_m, 2. 找到thinkcmf/vendor/thinkcmf/src/common.php // $theme config(template.cmf_default_theme);if (cmf_is_mobile()) {$theme config(template.cmf_moblie_default_theme);} el…

python股票分析挖掘预测技术指标知识之均线指标详解(6)

本人股市多年的老韭菜&#xff0c;各种股票分析书籍&#xff0c;技术指标书籍阅历无数&#xff0c;萌发想法&#xff0c;何不自己开发个股票预测分析软件&#xff0c;选择python因为够强大&#xff0c;它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

计算机毕业论文内容参考|基于区块链技术的电子健康记录系统的设计与实现

文章目录 摘要前言绪论课题背景国内外相关研究课题内容区块链技术介绍系统分析用户需求分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于区块链技术的电子健康记录系统的设计与实现。该系统旨在解决传统电子健康记录系统存在的数据安全性、数据隐私性和数据互操作性…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件&#xff0c;Maven-Reload pr…

鸿蒙OpenHarmony技术—消息机制实现

用户态应用发送消息到驱动 用户态主要代码 struct HdfIoService *serv HdfIoServiceBind(SAMPLE_SERVICE_NAME);......ret serv->dispatcher->Dispatch(&serv->object, SAMPLE_WRITE_READ, data, reply); if (ret ! HDF_SUCCESS) {HDF_LOGE("fail to sen…

通往人工智能的 Go 之路

Agency 该库旨在为那些希望通过清晰、高效且符合 Go 语言惯例的方法来探索大型语言模型&#xff08;LLMs&#xff09;和其他生成式人工智能的开发人员而设计。 特点 纯 Go 语言&#xff1a;快速、轻量级&#xff0c;静态类型&#xff0c;无需涉及 Python 或 JavaScript编写清晰…

人工智能趋势报告解读:ai野蛮式生长的背后是机遇还是危机?

近期&#xff0c;Enterprise WordPress发布了生成式人工智能在营销中的应用程度的报告&#xff0c;这是一个人工智能迅猛发展的时代&#xff0c;目前人工智能已经广泛运用到内容创作等领域&#xff0c;可以预见的是人工智能及其扩展应用还将延伸到我们工作与生活中的方方面面。…

gradle --腾讯国内镜像源

distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-7.3.3-bin.zip 1.进入到自己工程目录下的wrapper文件夹。 2.编辑gradle-wrapper文件 使用https://mirrors.cloud.tencent.com/gradle/gradle-4.6-all.zip来代替原来的 https\://services.gradle.org/distri…

高精度、大电流、低压差电压调整器芯片 D2632,可以用于电池供电设备等产品上

D2632是一款高精度、大电流、低压差电压调整器。主要作为电源装置提供高效的电压调整。 最大输出电流可达3A&#xff0c;并且外接器件少&#xff0c;拥有输出电压(ADJ) 可调特点。 主要特点&#xff1a; 1. 低压差(满载350mV); 2. 地电流小; …

Oracle导出CSV文件

利用spool spool基本格式&#xff1a; spool 路径文件名 select col1||,||col2||,||col3||,||col4 from tablename; spool off spool常用的设置&#xff1a; set colsep ;    //域输出分隔符 set echo off;    //显示start启动的脚本中的每个sql命令&#xff0c;缺…

利用Embedding优化搜索功能

我们继续用Gemini学习LLM编程之旅。 Embedding是一种自然语言处理 (NLP) 技术&#xff0c;可将文本转换为数值向量。Embedding捕获语义含义和上下文&#xff0c;从而导致具有相似含义的文本具有更接近的Embedding。例如&#xff0c;句子“我带我的狗去看兽医”和“我带我的猫去…

Mysql 动态链接库配置步骤+ 完成封装init和close接口

1、创建新项目 动态链接库dll 2、将附带的文件都删除&#xff0c;创建LXMysql.cpp 3、项目设置 3.1、预编译头&#xff0c;不使用预编译头 3.2、添加头文件 3.3、添加类 3.4、写初始化函数 4、项目配置 4.1、右键解决方案-属性-常规-输出目录 ..\..\bin 4.2、生成lib文件 右…

MAC 签名证书替换

1.概述 在用开发者签名过期后导致签名失效&#xff0c;需要更新证书 当过期时&#xff0c;点击证书时显示“此证书无效” 2.证书分类 3.登录 首先登陆Apple Developer官网开发者账号登陆。登录网址Apple Developer点击Account输入账号登录 4.需要的证书 本司现阶段只在MacO…

客服智能管理系统是如何应用的

客服系统有很多种类&#xff0c;针对不同场景的客服使用的客服系统也不同&#xff0c;如有网店里的在线客服、实体店里的电话客服、网站上的在线客服、公共服务型的热线客服、售后服务客服等等。所谓客服智能管理系统就是一种可以把多个客服场景都管理起来的系统&#xff0c;提…

全面解析vcruntime140_1.dll无法继续执行代码问题

在使用电脑的过程中&#xff0c;我们可能会遇到各种问题&#xff0c;如“找不到vcruntime140_1.dll无法继续执行代码”。vcruntime140_1.dll是Visual C Runtime Library&#xff08;视觉C运行时库&#xff09;的一个组件&#xff0c;主要用于支持应用程序的运行。这个文件包含了…

服务器磁盘挂载及格式化

一边学习,一边总结,一边分享! 写在前面 最近一直折腾组装的电脑,来回折腾了很久关于我花费六千多组了台window+Linux主机,目前基本是可以使用了。对于Windows主机配置基本是没问题,一直在使用,以及桌面化软件,都可以自己安装,只是说这台主机有些软件可能一时半会安装…

爆火小游戏敲木鱼流量主小程序源码系统+完整的代码包以及安装搭建教程

随着移动互联网的快速发展&#xff0c;小程序已成为一种新的应用形态&#xff0c;深入到人们生活的方方面面。其中&#xff0c;小游戏由于其简单、有趣的特点&#xff0c;吸引了大量用户&#xff0c;也成为了许多开发者的首选。敲木鱼小游戏&#xff0c;以其独特的玩法和轻松的…

Transformer从菜鸟到新手(二)

引言 这是Transformer的第二篇文章&#xff0c;上篇文章中我们了解了分词算法BPE&#xff0c;本文我们继续了解Transformer中的位置编码和核心模块——多头注意力。 位置编码 我们首先根据BPE算法得到文本切分后的子词标记&#xff0c;然后经过输入嵌入层将每个标记转换为对…