码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用React.ts创建一个密码生成器的简单示例


    目录

    • 密码生成器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>;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

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

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


    React如何正确定义对象数组

    interface ContainerBound {
        top: number,
        left: number,
    }
    const [resultContainerBound, setResultContainerBound] = useState<ContainerBound>({
        top: 0,
        left: 0,
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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);
    }, []);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在React中设置复选框check属性

    如果你打算创建一个受控复选框组件,你必须确保checked属性的计算结果为true或false。这可以通过设置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>
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

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


    三目运算符实现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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    参考资料

    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
  • 相关阅读:
    我们这一代人的机会是什么?
    8.19PMP考试成绩已出!(附查询流程)
    说一说 Backscatter communication
    Mybatis动态sql
    PromQL 查询监控数据
    自游家NV回应:所有订单将在48小时内退款
    PolarDB-X 源码解读系列:DML 之 INSERT IGNORE 流程
    ESP8266-Arduino编程实例-HDC1008温度湿度传感器驱动
    操作步骤:EasyCVR平台国标GB设备如何正确配置告警预案?
    mysql两阶段提交
  • 原文地址:https://blog.csdn.net/weixin_51333606/article/details/128091003
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号