组件源码——按钮Button

本文详细介绍了Button组件的API,包括其属性如type、size、icon等的使用方法,以及组件如何通过classNames函数实现样式控制。提供了Button组件的React实现代码,帮助开发者更好地理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Button组件的API如下

属性类型说明
typestring按钮类型,除默认外可选值: minor / inverse
sizestring按钮尺寸,除默认外可选值:sm、lg
iconstring按钮图标,支持 fontawaresome 图标
circlebool是否为圆形
transparentbool文字颜色是否继承,背景是否透明

Button组件的实现比较简单,就是通过classNames函数来实现button组件类名的命名,这样css可以根据类名来控制属性,例如如果是className='bfd-btn bfd-btn--circle',css会分别对bfd-btnbfd-btn---circle设置样式。可以说Button组件的实现是其他组件实现的一个雏形,下面附上代码

import './index.less'
import React, { PropTypes } from 'react'
import classnames from 'classnames'
import Icon from '../Icon'

const Button = props => {
  const { children, className, type, size, icon, circle, transparent, ...other } = props
  const classNames = classnames(
    'bfd-btn',
    {
      [`bfd-btn--${type}`]: type,
      [`bfd-btn--${size}`]: size,
      'bfd-btn--circle': circle,
      'bfd-btn--icon': icon && !children,
      'bfd-btn--transparent': transparent
    },
    className
  )
  return (
    <button type="button" className={classNames} { ...other }>
      {icon && <Icon type={icon} />}
      {children}
    </button>
  )
}

Button.propTypes = {
  // 按钮类型,除默认外可选值: minor / inverse
  type: PropTypes.string,
  // 按钮尺寸,除默认外可选值:sm、lg
  size: PropTypes.string,
  // 按钮图标,支持 fontawaresome 图标
  icon: PropTypes.string,
  // 是否为圆形
  circle: PropTypes.bool,
  // 文字颜色是否继承,背景是否透明
  transparent: PropTypes.bool
}
export default Button
复制代码
/*========================================================================*/ // 事件名称: readme in uo_imflatbutton * (pdm) inherited from commandbutton /*------------------------------------------------------------------------*/ // 声明:本按钮原型为“扁平按钮”,扁平按钮功能部分归原始作者所有 /*-------------------------------------------------------------------------*/ // 描述: 本对象为自定义按钮对象,修改自扁平按钮 // 主要功能为:扁平按钮形式 〔包括原扁平按钮的所有功能〕 // 渐进色状态 〔具有渐近色的按钮〕 // 正常按钮状态 〔修饰了的原始PB按钮〕 // 新增两种XP风格按钮 〔焦点状态颜色不同〕 // 图片按钮状态〔可用pb自己的图片〕 // 椭圆形按钮状态 〔在以上几种按钮形态下把按钮转换为椭圆形〕 // 提示信息显示 〔显示按钮的提示信息〕 // 用户可自定义各种属性,包括各种颜色、图片、状态等 // 具体属性请看按钮的属性值,注:按钮的属性为中文属性 // // 增加PB自带图片锁定功能〔如果图片为PB自带图片,只要选择按钮的PB自带图片 // 属性即可锁定图片大小为原始尺寸〕 // 增加了所有状态的属性开关,包括: // 可视 可用 默认 取消 // 椭圆形状〔确定按钮是否为椭圆形状〕 // 边框 〔确定按钮是否有边框〕 // 凸起效果 〔确定按钮是否有凸起效果〕 // 凸起效果渐进色背景 〔确定按钮是否有凸起效果渐进色背景〕 // 渐进色背景 〔确定按钮是否有渐进色背景〕 // 水平渐进 〔确定按钮渐进色背景为水平渐进还是竖直渐近〕 // PB自带图片 〔锁定PB自带图片时的图片大小〕 // 提示信息显示 〔是否显示提示信息〕 // 按钮背景颜色设置 〔设置按钮的背景颜色〕 /*------------------------------------------------------------------------*/ // 说明:只包括一个按钮对象 /*------------------------------------------------------------------------*/ // 作者: pcm 日期: 2003-11-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值