组件源码——按钮Button

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
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值