React18学习笔记42:Button组件深度解析


import React from "react";
import classNames from "classnames"
export enum ButtonSize{
Large='lg',
Small='sm'
}

export enum ButtonType{
Primary="primary",
Default="default",
Danger='danger',
Link='link',

}

interface BaseButtonProps{
className?:string,
disabled?:boolean,
size?:ButtonSize,
btnType?:ButtonType;
children:React.ReactNode;
href?:string;
}

const Button:React.FC<BaseButtonProps>=(props)=>{
const {
btnType,
disabled,
size,
children,
href
}=props

const classes=classNames("btn",{
[`btn-${btnType}`]:btnType,
[`btn-${size}`]:size,
'disabled':(btnType===ButtonType.Link)&&disabled
})
if(btnType===ButtonType.Link&&href){
return(
<a className={classes} href={href}>{children}</a>
)
}else{
return (
<button className={classes} disabled={disabled}>
{children}
</button>
)
}
}
Button.defaultProps={
disabled:false,
btnType:ButtonType.Default
}
export default Button
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空