首页 > 其他分享 >React+TS前台项目实战(十)-- 全局常用组件CopyText封装

React+TS前台项目实战(十)-- 全局常用组件CopyText封装

时间:2024-06-16 19:30:38浏览次数:12  
标签:content -- TS React 组件 import CopyText 文本 拷贝

文章目录


前言

今天这篇主要讲项目常用复制文本组件封装,这个组件是一个用于拷贝文本的 React 组件,它提供了拷贝,国际化和消息提示的功能


CopyText组件

1. 功能分析

(1)将 content 作为其内容,表示要拷贝的文本内容
(2)使用 useTranslation ,以便在组件中进行国际化
(3)使用 message.useMessage 函数,以便在组件中显示消息
(4)使用 navigator.clipboard.writeText 方法将 content 写入剪贴板
(5)组件使用了 classNames 库来合并样式类名,并且使用了 styles 模块中的样式类名来设置弹框的样式

2. 代码+详细注释

// @/components/CopyText/index.tsx
import { useTranslation } from "react-i18next";
import classNames from "classnames";
import { CopyText } from "./styled.tsx";
import { message } from "antd";
// 定义Props的类型,用于表示组件的属性
type Props = {
  content: string; // 表示拷贝的文本内容
  className?: string; // 表示要应用的样式类名(可选)
};
// 拷贝文本的组件:接受一个参数content,表示要拷贝的文本内容
export default (props: Props) => {
  // 解构组件的属性
  const { content, className } = props;
  // 使用useTranslation hook获取i18n的翻译函数
  const { t } = useTranslation();
  // 使用message.useMessage获取message组件的api和contextHolder
  const [messageApi, contextHolder] = message.useMessage();
  // 返回一个div元素,可以点击进行拷贝文本操作
  return (
    <CopyText
      className={classNames(styles.copyContainer, className)}
      id={`copy__content__${content}`}
      onClick={(event) => {
        // 阻止事件冒泡和默认行为
        event.stopPropagation();
        event.preventDefault();
        // 使用剪贴板API将文本内容拷贝到剪贴板
        navigator.clipboard.writeText(content).then(() => {
          // 使用messageApi.open打开一个成功提示框
          messageApi.open({
            type: "success",
            content: t("common.copied"), // 使用i18n翻译成功提示语
          });
        });
      }}
    >
      {content}
    </CopyText>
  );
};
------------------------------------------------------------------------------
// @/components/CopyText/styled.tsx
import styled from "styled-components";
export const CopyText = styled.div`
  cursor: pointer;
`;

3. 使用方式

// 引入组件
import CopyText from "@/pages/components/CopyText";
// 使用
<CopyText content="复制文本测试" />

4. 效果展示

在这里插入图片描述


总结

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

标签:content,--,TS,React,组件,import,CopyText,文本,拷贝
From: https://blog.csdn.net/weixin_43883615/article/details/139724444

相关文章

  • 浅谈红队攻防之道-将exe文件指定ico图标上线
    我们为什么跌倒?这样我们才能学会自己站起来。生成Payload这里使用Pakages生成一个Payload。在菜单栏中依次选择命令,如图保持默认配置,选择监听器,勾选x64,点击generate,生成1.exe文件(这个可以用生成的python的payload编译成exe,可以免杀)然后选择1.exe文件和刚刚生成的1.ico......
  • JAVA 实用类
    1.什么是枚举类?访问修饰符Enum枚举名称{}其应用上可以看做一个类去定义,如果枚举里有方法,定义的枚举常量要以':'结尾2.应用枚举的好处?枚举限制了范围,更加安全,如果要大量定义常量用publicfinalstaticA=1;定义起来太复杂,用枚举简单多,代码简洁publicvoidday(Day(枚举类型)......
  • Dubbo源码解析-mock原理
    上篇我们介绍了消费端调用流程Dubbo源码解读-Consumer调用流程解析_dubboconsumer-CSDN博客    因为篇幅问题,本文主单独Dubbo消费端mock原理,从dubbo源码角度进行解析。    大家可以好好仔细读一下本文。有疑问欢迎留言。    接着说明,读Dubbo源码......
  • 5分钟理透LangChain的Chain
    LangChain几乎是LLM应用开发的第一选择,它的野心也比较大,它致力于将自己打造成LLM应用开发的最大社区。而LangChain最核心的部分非 Chain 莫属。那Chain到底是个啥,概念比较模糊,像雾像雨又像风,这篇文章将带你快速理透LangChain中的Chain概念。1.Chain是核心LangChain的......
  • HAL库开发--I2C的配置方式和读写操作
    知不足而奋进望远山而前行目录知不足而奋进望远山而前行​编辑文章目录前言目标内容需求I2C功能配置I2C编码移植PCF8563驱动I2C读写实现总结前言在嵌入式系统开发中,I2C(Inter-IntegratedCircuit)总线是一种常见且重要的通信协议,用于连接多种外设和传感器,实现......
  • 基于Typora、Gitee和picgo搭建图床
    基于Typora、Gitee和picgo搭建图床使用Typora编辑文本上传图片的时候,会发现图片都是保存在本地的,如果上传到博客图片会显示不出来,还需要自己手动一张一张往上贴,怎么解决?(1)首先下载一个picgo链接:https://pan.baidu.com/s/1Uf5BH7EegbhcLJ-CwUpceQ?pwd=ezta提取码:ezta......
  • python如何判断字符串不为空格
    1、使用字符串长度判断。len(s)==0 则字符串为空if len(username) ==0 or len(password) == 0:  #判断输入的用户名或密码是否为空    print('用户名或密码不能为空')2、isspace判断是否字符串全部是空格。s.isspace()==Trueif username.isspace(......
  • 【Python】高阶函数
    高阶函数高阶函数是接受另一个函数作为参数,并返回一个函数作为结果的函数。这种类型的函数是函数式编程的核心,因为它们允许对行为进行抽象和复用,使得代码更加简洁和灵活。defapply_function(func,value):returnfunc(value)defsquare(x):returnx*xpr......
  • python做的游戏有哪些
    比较大型的,使用Python的游戏有两个,一个是《EVE》,还有一个是《文明》。另外GitHub上有很多开源的小游戏,下面给大家介绍一下:1.Github上面有个项目FreePythonGames,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来练练手,另外PyGame这个网站里面里面集合了很多Python......
  • 端口服务
    端口服务信息扫描的思路一个服务一个端口本机端口​ Windows​ netstat-aon|findstr3306​ LInux​ netstat-an|grep3306远程机器端口​telnet192.168.142.13780​ wget192.168.142.13780​ nc-vz192.168.142.137445​ nc-vz192.168.1......