使用React.ts创建一个密码生成器的简单示例

news2024/11/24 1:23:36

目录

  • 密码生成器Demo
    • Feature
    • 知识点
      • React TypeScript —— Function Components
      • 为元素(::before/::after)绑定点击事件
      • React如何正确定义对象数组
      • 在React中设置复选框`check`属性
      • 三目运算符实现React动态绑定class和style
    • 参考资料

密码生成器Demo

stars forks license issues issues commit-activity last-commit

使用密码生成器工具创建随机密码。PC 浏览器体验

该Demo旨在于练习React.ts函数组件写法。Github项目地址


Feature

  • 随机生成密码
  • 显示密码强度
  • 可选密码选项(长度、大写/小写字母、数字、符号)
  • 单击密码区域将密码复制到剪切板上

在这里插入图片描述


知识点

React TypeScript —— Function Components

这些可以写成接受props参数并返回一个JSX元素的普通函数。

// 声明属性的类型
type AppProps = {
  message: string;
}; /* 如果导出,请使用`interface`,以便消费者可以扩展 */

// 声明函数组件的最简单方法;返回类型是推断出来的。
const App = ({ message }: AppProps) => <div>{message}</div>;

// 你可以选择声明返回类型,这样当你不小心返回其他类型时就会抛出错误
const App = ({ message }: AppProps): JSX.Element => <div>{message}</div>;

// 还可以内联类型声明;消除了命名prop类型,但看起来重复
const App = ({ message }: { message: string }) => <div>{message}</div>;

为元素(::before/::after)绑定点击事件

伪元素没有DOM结构,所以无法直接绑定事件,但是,可以利用事件冒泡,把事件处理行数绑定到父元素上,子元素触发事件,冒泡到父元素,再用CSS禁掉父元素的点击事件(点击父元素无法再触发点击事件),同时开启子元素的点击事件。
在这里插入图片描述
必须禁掉父元素的点击事件,否则点击父元素也会触发

必须打开子元素的点击事件,子元素默认继承了父元素的 pointer-events: none;
在这里插入图片描述


React如何正确定义对象数组

interface ContainerBound {
    top: number,
    left: number,
}
const [resultContainerBound, setResultContainerBound] = useState<ContainerBound>({
    top: 0,
    left: 0,
});
interface ContentTableBizType {
  text: string;
  value: string;
}

// react
const [bizType, setBizType] = useState<ContentTableBizType[]>([]);

// 初始化
useEffect(() => {
  // 获取业务类型
  const bizType: ContentTableBizType[] = [
    { text: 'xxx', value: 'male' },
    { text: 'xxx', value: 'female' },
  ];
  setBizType(bizType);
}, []);

在React中设置复选框check属性

如果你打算创建一个受控复选框组件,你必须确保checked属性的计算结果为truefalse。这可以通过设置defaultProps属性并将checked属性默认设置为false来实现。这是一个代码示例

class App extends Component {
  constructor(props){
    super(props)
    this.state = {
    }
  }
  render() {
    console.log('App started');
    this.defaultProps = {
      checked: false
    }
    return <input type="checkbox" checked={this.checked} name="controlled"></input>
  }
}

使用defaultProps的另一个优点是它们只代表默认值。用户仍然可以与应用程序交互并更改checked 属性的状态(即通过target进行修改)。

checked属性设置为truefalse意味着不允许用户更改其状态。


三目运算符实现React动态绑定class和style

动态绑定class和style都是对象语法方式,这是一个代码示例:

this.props.asideList.map(item=>(
    <li className={ this.state.curId === item.id?'active':'asideItem default'}
        style={this.state.curId === item.id?{fontSize:'20px'}:{fontSize:'12px'}}
        onClick={(e) => this.getId(e,item.id)} 
        key={item.id}>
        {item.name}
    </li>
))

参考资料

  1. https://blog.csdn.net/JDSYYL/article/details/120758887
  2. https://www.cnblogs.com/mcky-love/p/14422900.html
  3. https://www.delftstack.com/zh/howto/react/checked-property-in-react-checkbox/
  4. https://blog.csdn.net/jzb1205/article/details/93496362

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

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

相关文章

Java基于springboot +vue网上超市购物网站 多商家

随着我国信息化的发展&#xff0c;大家更多的是希望通过网络获取到更多的直接所需的信息&#xff0c;而商品一直以来就是人类永恒的追求之一&#xff0c;如何能够享有到更多的商品是很多人一直以来关系的问题。 本系统通过在线网购的方式让用户可以在需要购买商品但是有没有时间…

git submodule创建子仓库

git submodule创建子仓库 文章目录git submodule创建子仓库简介创建主仓库创建子仓库将子仓库添加到主仓库中将合并后的主仓库提交推送到云端简介 当我们的项目伴随着时间的增长越来越大的时候&#xff0c;单一的仓库便不再方便管理&#xff0c;这时候就需要将部分功能提取出来…

PyQt5 事件处理机制

PyQt5 事件处理机制PyQt为事件处理提供了两种机制&#xff1a;高级的信号与槽机制&#xff0c;以及低级的事件处理机制。信号与槽可以说是对事件处理机制的高级封装。 常见事件类型&#xff1a; 键盘事件&#xff1a;按键按下和松开。鼠标事件&#xff1a;鼠标指针移动&#x…

Go语言中的值传递和引用传递 附: 内存地址分析

在学习Go语言函数部分遇到了引用传递和值传递&#xff0c;与C颇为类似&#xff0c;浅谈一下自己对Go语言中的值传递和引用传递的理解。 一、数组—值传递 我们用Go语言中的数组作为样例&#xff0c;来理解值传递的过程。 代码 package mainimport "fmt"func main…

[附源码]计算机毕业设计springboot基于Java的员工管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]SSM计算机毕业设计校园闲置物品租赁系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Pytest接口测试框架实战项目搭建(二)

一、前言 业务系统的登录均要经过统一登录系统S&#xff0c;本篇演示统一登录处理&#xff0c;一个是内部业务系统C&#xff08;其余内部业务系统AB用的都是相同账号密码&#xff09;&#xff0c;一个是外部用户使用的系统W&#xff0c;因为账号密码以及headers信息都不一样&am…

DCDC--Burst Mode和Pulse Skipping Mode

1、Burst Mode和Pulse Skipping Mode&#xff08;PSM&#xff09;的区别 Burst Mode ≠ Pulse Skipping Mode&#xff0c;论坛有人认为Burst Mode就是Pulse Skipping Mode&#xff0c;这是不对的。 以LTC3624为例&#xff1a; Burst Mode operation provides the highest ef…

大数据(9h)FlinkSQL双流JOIN、Lookup Join

文章目录1、环境2、Temporal Joins2.1、基于处理时间&#xff08;重点&#xff09;2.1.1、设置状态保留时间2.2、基于事件时间3、Lookup Join&#xff08;重点&#xff09;4、Interval Joins&#xff08;基于间隔JOIN&#xff09;重点是Lookup Join和Processing Time Temporal …

SpringBoot+Vue实现前后端分离的餐饮点餐系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

线性表01- 数组与简易接口设计

线性表的定义 线性表: 具有n个相同类型元素的有限序列 n>0 线性表的元素特点是有索引, 可以通过索引快速查找到元素. a1是a2的前驱, a2是a1的后继 常见的线性表 数组链表栈队列哈希表 (散列表) 数组 数组是一种顺序存储的线性表, 所有的元素的内存地址是连续的. int arr…

Python用广义加性模型GAM进行时间序列分析

每当你发现一个与时间对应的趋势时&#xff0c;你就会看到一个时间序列。我们围绕广义加性模型GAM技术进行一些咨询&#xff0c;帮助客户解决独特的业务问题。研究金融市场表现和天气预报的事实上的选择&#xff0c;时间序列是最普遍的分析技术之一&#xff0c;因为它与时间有着…

matlab图像的运算有点运算、代数运算、逻辑运算和几何运算

1.图像的点运算 2.图像的代数运算 3.图像的逻辑运算 4.图像的几何运算 一、图像的点运算 图像的点运算&#xff1a;对图像中的每个像素值进行计算&#xff0c;从而改善图像显示效果的操作&#xff0c;常用于改变图像的灰度范围及分布&#xff0c;有时也被称为对比度增强和拉伸…

Arduino开发实例-DIY酒精浓度检测计

DIY酒精浓度检测计 在本文中,将详细介绍如何创建一个简单的酒精检测器。 它可以在各种应用领域中使用。市场上有许多先进的酒精传感器,价格合理,但我们在这里使用一些基本的微控制器来制作这个项目,如 Arduino、LED、蜂鸣器和 MQ3 酒精传感器。 1、MQ-3传感器介绍 MQ-3传…

外卖项目(项目优化2)11---读写分离

读&#xff1a;查询的操作 目录 一、Mysql主从复制 172 1.1Mysql主从复制_配置主库Master&从库Slave 173 配置&#xff1a;主库Master&#xff1a; 配置&#xff1a;从库Slave 二、读写分离案例 175 2.1背景 2.2Sharding-JDBC介绍 2.3读写分离案例---入门案例 17…

Magic Leap 2设计和开发幕后花絮

Magic Leap今年发布新款AR头显Magic Leap 2&#xff0c;相比于上一代Magic Leap 1&#xff0c;新品更专注于B端场景&#xff0c;自公布以来&#xff0c;Magic Leap不仅对公司策略、理念更加透明&#xff0c;也不断公开ML2产品设计背后的思考。相比于ML1&#xff0c;ML2的设计有…

里P7告诉你,接口测试真的很简单,有手就行

一、什么是接口测试&#xff1f; 所谓接口&#xff0c;是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试&#xff0c;则是通过接口的不同情况下的输入&#xff0c;去对比输出&#xff0c;看看是否满足接口规范所规定的功能、…

windows bat批处理文件,实现某个软件的重启

bat批处理实现软件重启功能windows环境需要明确的概念按照启动文件xxx.exe去定位某个程序的Pid根据pid杀死某个进程根据exe文件启动某个软件bat示例&#xff0c;杀死软件进程并重启windows环境 我这里用的是win10企业版&#xff0c;在基础功能上和家庭版区别不大 需要明确的概…

19uec++多人游戏【基础AI导航】

首先把这一期的资源导入一下 创建一个球体类&#xff0c;继承于pawn类 为其添加静态组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "Components")class UStaticMeshComponent * MeshComponent; #include "Components/StaticMeshComponent.h&qu…

具备统一门户功能的内网即时通讯软件才是发展趋势

作为企业领导&#xff0c;我们最害怕的就是下属工作效率不高&#xff0c;没办法为企业带来价值&#xff0c;有时候并不一定是员工自身存在问题&#xff0c;“工欲善其事&#xff0c;必先利其器“正好说明了&#xff0c;如果我们有能力在线的员工加上强大的办公软件辅助&#xf…