使用React.ts创建一个密码生成器的简单示例
创始人
2024-02-29 14:45:49
0

目录

  • 密码生成器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) => 
{message}
;// 你可以选择声明返回类型,这样当你不小心返回其他类型时就会抛出错误 const App = ({ message }: AppProps): JSX.Element =>
{message}
;// 还可以内联类型声明;消除了命名prop类型,但看起来重复 const App = ({ message }: { message: string }) =>
{message}
;

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

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

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


React如何正确定义对象数组

interface ContainerBound {top: number,left: number,
}
const [resultContainerBound, setResultContainerBound] = useState({top: 0,left: 0,
});
interface ContentTableBizType {text: string;value: string;
}// react
const [bizType, setBizType] = useState([]);// 初始化
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 this.checked} name="controlled">}
}

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

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


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

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

this.props.asideList.map(item=>(
  • 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}
  • ))

    参考资料

    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

    相关内容

    热门资讯

    喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
    发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
    网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
    为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
    家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
    华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
    四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
    怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
    苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
    客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...