React+TS前台项目实战(十一)-- 全局常用组件提示语可复制Link组件封装

news2024/12/27 11:23:43

文章目录

  • 前言
  • HighLightLink组件
    • 1. 功能分析
    • 2. 代码+详细注释
    • 3. 使用方式
    • 4. 效果展示
  • 总结


前言

今天这篇讲的这个组件,是一个用于高亮显示文本并添加可选的跳转链接,提示文本,复制文本的 React 组件


HighLightLink组件

1. 功能分析

(1)通用的高亮Link代理组件,用于展示链接名称以及跳转地址处理
(2)根据是否提供tooltip属性,决定是否显示一个带有提示文本的Tooltip组件,提示文本可点击复制
(3)可复制组件单独抽离成一个灵巧组件,提供复制功能,具体代码查看上篇全局常用组件CopyText封装
(4)组件使用了 classNames 库来合并样式类名,并且使用了 styles 模块中的样式类名来设置弹框的样式

2. 代码+详细注释

// @/components/HighLightLink/index.tsx
import { FC } from "react";
import { Tooltip } from "antd"; // 引入antd的Tooltip组件
import Link from "../Link"; // 引入自定义的Link组件
import CopyText from "./CopyText"; // 引入自定义的CopyText组件
import { HighLightPanel } from "./styled"; // 引入自定义的HighLightPanel组件

// 定义Props的类型,用于表示组件的属性
type Props = {
  value: string; // 表示要高亮显示的文本
  to: string; // 表示要跳转的链接
  tooltip?: string; // 表示要显示的提示文本(可选)
  className?: string; // 表示要应用的样式类名(可选)
};

/**
 * HighLightLink组件,用于高亮显示文本并添加可选的跳转链接和提示文本
 * @param props - 组件的属性
 * @returns React元素
 */
export const HighLightLink: FC<Props> = (props) => {
  // 解构组件的属性
  const { value, to, tooltip, className } = props;

  return tooltip ? (
    // 如果存在提示文本,则显示Tooltip组件包裹的内容
    <Tooltip placement="top" title={<CopyText content={tooltip} />}>
      <HighLightPanel>
        {/* 使用Link组件包裹高亮显示的文本,并应用样式类名和跳转链接 */}
        <Link className={`${className} monospace`} to={to}>
          {value}
        </Link>
      </HighLightPanel>
    </Tooltip>
  ) : (
    // 否则直接显示高亮显示的文本
    <HighLightPanel>
      <Link className={`${className} monospace`} to={to}>
        {value}
      </Link>
    </HighLightPanel>
  );
};
------------------------------------------------------------------------------
// @/components/HighLightLink/index.module.scss
@import "@/styles/variables.module";

.highLightPanel {
  color: var(--cd-primary-color);
  font-size: 14px;
  @media (max-width: $mobileBreakPoint) {
    font-size: 12px;
  }
  a {
    color: var(--primary-color);
    margin-top: 2px;
    &:hover {
      color: var(--cd-primary-color);
    }
    @media (max-width: $mobileBreakPoint) {
      margin-top: 1px;
    }
  }
}
------------------------------------------------------------------------------
// @/components/CopyLightLink/styled.tsx
import classNames from 'classnames'
import { FC, HTMLAttributes } from 'react'
import styles from './index.module.scss'

export const HighLightPanel: FC<HTMLAttributes<HTMLDivElement>> = props => {
  const { children, className, ...rest } = props
  return (
    <div className={classNames(styles.highLightPanel, className)} {...rest}>
      {children}
    </div>
  )
}

3. 使用方式

// 引入组件
import HighLightLink from "@/pages/components/Text";
// 使用
<HighLightLink value="查看区块" to={`/block/123456`} tooltip="查看区块查看区块查看区块" />

4. 效果展示

在这里插入图片描述


总结

下一篇讲【全局常用组件Toast封装】。关注本栏目,将实时更新。

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

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

相关文章

Pyqt QCustomPlot 简介、安装与实用代码示例(一)

目录 简介安装实用代码示例带有填充的简单衰减正弦函数及其红色的指数包络线具有数据点的 sinc 函数、相应的误差条和 2--sigma 置信带几种散点样式的演示展示 QCustomPlot 在设计绘图方面的多功能性 结语 所有文章除特别声明外&#xff0c;均采用 CC BY-NC-SA 4.0 许可协议。转…

基于uni-app和图鸟UI的智慧校园圈子小程序开发实践

摘要&#xff1a; 随着教育信息化和“互联网教育”的快速发展&#xff0c;智慧校园建设已成为推动校园管理现代化、提高教育教学质量的重要手段。本文介绍了基于uni-app和图鸟UI开发的智慧校园圈子小程序&#xff0c;旨在通过一站式服务、个性化定制、数据互通和安全可靠等特点…

outline server 服务搭建到 Ubuntu

安装outline manager到本地电脑 Windows版: https://github.com/Jigsaw-Code/outline-releases/blob/master/manager/Outline-Manager.exe MacOS版 https://github.com/Jigsaw-Code/outline-releases/blob/master/manager/Outline-Manager.dmg 启动outline manager 点击…

Proteus8.13安装及使用

Proteus安装包下载地址 具体安装方法如下&#xff1a; 退出所有杀毒软件,右键以管理员身份运行 如果缺插件安装插件然后点击安装 如果遇到这种需要勾选的都勾选 安装插件完成 安装过程: 安装完成后桌面会自动出现图标 注意这个安装包是免破解的, 安装好以后可以直接使用 打…

使用人工智能帮忙盲人进行环境地图绘制

介绍 据报道&#xff0c;仓鼠、狼、黑猩猩和蝙蝠等智能动物可以学习环境地图&#xff0c;并选择适当的行动路径。 因此&#xff0c;机器人自我定位和绘制环境地图以实现智能行为被认为是非常重要的。 另一方面&#xff0c;如果通过机器学习&#xff08;如神经网络&#xff0…

【scrapy】爬虫,从429状态码说起

许久未爬&#xff0c;发现爬不动了&#xff0c;哈哈哈&#xff0c;记录下这次失败的爬取经历 问题描述 针对这样的一个网站&#xff1a; https://www.farfetch.cn/cn/shopping/women/dresses-1/items.aspx?page1&view96&sort3 需求&#xff1a; 1.需要爬取列表页…

MySQL中的客户端选项(二)

在全局选项文件之后读取此选项文件&#xff0c;但&#xff08;在Unix上&#xff09;在用户选项文件之前读取。如果文件不存在或无法访问&#xff0c;则会发生错误。如果file_name不是绝对路径名&#xff0c;则会相对于当前目录进行解释。 仅使用给定的选项文件。如果文件不存在…

HACH哈希紫外可见光分光光度计维修DR6000

DR3900可见分光光度计内置准双光束光学系统&#xff0c;自动校准波长&#xff0c;该可见光分光光度计预置200多个用户程序&#xff0c;几乎覆盖常规水质参数&#xff0c;彩色触屏搭载中文操作界面&#xff0c;可自动分析检测并存储2000组实验数据&#xff0c;是一款测量准确的可…

《EDA技术》 Quartus图3—4实验报告

目录 一&#xff1a;结构描述方式 1.1创建工程 1.1.1点击New Project Wizard&#xff0c;创建t34工程。 1.1.2设置工程路径和名称&#xff08;t34&#xff09; 1.2设计门电路 1.2.1设计三输入或非门VHDL程序 1.2.2 设计非门VHDL程序 ​编辑 1.2.3 设计二输入或非门VHD…

ubuntu16因swap分区uuid错误启动慢排查

感觉ubuntu16启动特别慢 dmesg查看如下&#xff1a; [ 10.050123] audit: type1400 audit(1718608189.395:11): apparmor"STATUS" operation"profile_load" profile"unconfined" name"webbrowser-app//oxide_helper" pid708 comm&q…

【测试专题】系统测试报告(原件Word)

软件测试报告在软件开发过程中起着至关重要的作用&#xff0c;主要有以下几个主要原因&#xff1a; 1、确保软件质量 2、提供决策支持 3、记录测试过程和结果 4、促进沟通和协作 5、符合标准和法规要求 6、改进测试流程和策略 7、降低风险 软件开发全套资料获取进主页或者本文末…

查询Kafka集群中消费组(group)信息和对应topic的消费情况

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

一款超好用的国产 Redis 可视化工具,真香!

哈喽&#xff0c;大家好&#xff0c;我是黑板报君&#xff0c;一个资深的软件开发工程师&#xff0c;致力于为大家分享各领域优质开源项目&#xff0c;开发前沿技术以及互联网技术圈动态。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 日常开发过程中…

VBA学习(5):批量生成小饼图

之前给大家分享了如何用一个函数制作各种常见图表&#xff0c;之后有朋友问&#xff0c;下图中表示精确占比的饼图是怎么批量生成的&#xff1f; 批量生成小饼图有两种常用的方法&#xff0c;一种是用插件&#xff0c;比如Sparklines&#xff1b;另外一种是自己动手丰衣足食&am…

UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操

每天的直播时间&#xff1a; 周一至周五&#xff1a;20&#xff1a;00-23&#xff1a;00 周六与周日&#xff1a;9&#xff1a;00-12&#xff1a;00&#xff0c;14&#xff1a;00-17&#xff1a;00 TBOX 深圳 涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的&#xff1f;上…

位图法-有效的数独

有效的数独&#xff0c;主要是判断每行每列每宫有无重复元素。 每行每列用二重循环&#xff0c;每宫比较复杂&#xff0c;需要考虑每一宫的坐标与二重循环ij对应关系 行i&#xff0c;每一宫3行&#xff0c;3列 x3*(i/3)j/3 y3*(i%3)j%3

计算机考研|双非计算机专业是考研还是就业?主要看这一点!

去看一看招聘就知道了&#xff0c;看看公司需要的开发或者计算机岗位要求的东西你在本科的时候有没有精通的 如果你发现&#xff1a;哎&#xff1f;看着招聘的要求好像本科多少都接触过&#xff0c;但现在已经忘得差不多了&#xff0c;或者是&#xff0c;哦&#xff0c;我知道…

金蝶云星空程序员开发快速入门

文章目录 一 前言1.1 学习步骤1.2 学习需知 二、学习金蝶*云星空的步骤2.1 下载金蝶*云星空安装到本地2.2 查看官网的学习资料2.3 如何使用C#进行插件开发2.4 sqlserver的表设计以及存储过程2.5 如何使用python进行插件的开发2.6 第三方程序如何调用金蝶*云星空的数据 三 后记 …

移动硬盘数据恢复,6个亲测有效方法公开!

“我的移动硬盘已经用了很久了&#xff0c;最近不知道是怎么回事&#xff0c;里面有部分重要的数据居然不见了。想问问大家有什么方法可以恢复移动硬盘的数据吗&#xff1f;” 在数字时代的浪潮中&#xff0c;移动硬盘已成为我们存储和携带数据的重要工具。从海量的工作文档、珍…

在虚拟机中安装centos系统,及通过安装包安装jdk1.8,mysql5.7,redis7.2

在虚拟机中安装centos系统,及通过安装包安装jdk1.8,mysql5.7,redis7.2 第一章 CentOS7的下载1.1.使用阿里云开源镜像站下载。第二章 CentOS7的配置2.1.通过VMware 创建一个CentOS7虚拟机2.1.1.打开软件,点击如箭头所示按钮,创建虚拟机2.1.2.点击自定义,之后点击下一步2.1.3…