UNPKG

jimu-mobile

Version:

积木组件库助力移动端开发

71 lines (62 loc) 1.65 kB
/** * Created by yanshenshen on 17/11/16. */ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; class Checkbox extends React.Component { static propTypes = { back: PropTypes.func, disabled: PropTypes.bool, defaultChecked: PropTypes.bool, label: PropTypes.string, } static defaultProps = { back() {}, disabled: false, defaultChecked: false, label: '', } constructor(props) { super(props); this.state = { defaultChecked: this.props.defaultChecked, }; this.clicktaggle = this.clicktaggle.bind(this); } componentDidMount() {} componentWillReceiveProps(nextProps) { if (nextProps.defaultChecked !== this.props.defaultChecked) { this.setState({ defaultChecked: nextProps.defaultChecked, }); } } clicktaggle() { if (this.props.disabled) { return; } this.setState({ defaultChecked: !this.state.defaultChecked, }); this.props.back && this.props.back(!this.state.defaultChecked); } render() { const { className, label, disabled } = this.props, { defaultChecked } = this.state; const cls = classNames({ 'jimu-form-checkbox': true, 'jimu-checkbox-checked': defaultChecked, 'jimu-checkbox-disabled': disabled, [className]: className, }); return ( <div className={cls} onClick={this.clicktaggle}> {!defaultChecked && <span className="icon-jimu-check-normal" />} {defaultChecked && <span className="icon-jimu-check" />} <label>{label}</label> </div> ); } } export default Checkbox;