import React, { useState, useEffect } from 'react'
import PropTypes from 'prop-types'
import _ from 'lodash'
import classnames from 'classnames' import './index.less' function CheckBox(props) {
const {
style, checked: propsChecked, content, onChange, theme,
} = props
const wrapperStyle = _.assign({}, style) const [checked, setChecked] = useState(propsChecked === true) useEffect(() => {
setChecked(propsChecked)
}, [propsChecked]) return (
<div
className={classnames({
'single-checkbox-component-wrap': true,
'theme-dark': theme === 'dark',
checked: checked === true,
})}
onClick={() => {
const nextState = !checked
setChecked(nextState)
onChange(nextState)
}}
role="button"
tabIndex={0}
style={wrapperStyle}
>
<span className="icon" />
<span className="tip">{ content }</span>
</div>
)
} CheckBox.propTypes = {
style: PropTypes.object,
checked: PropTypes.bool,
content: PropTypes.string.isRequired,
onChange: PropTypes.func,
theme: PropTypes.string,
} CheckBox.defaultProps = {
style: {},
checked: false,
onChange: _.noop,
theme: 'normal',
} export default CheckBox
.single-checkbox-component-wrap {
display: flex;
justify-content: flex-start;
align-items: center;
cursor: pointer; &.checked {
.icon {
background-image: url(~ROOT/shared/assets/image/icon-checkbox-checked-30-30.png);
}
} .icon {
display: inline-block;
box-sizing: border-box;
width: 10px;
height: 10px;
border-radius: 50%;
background-image: url(~ROOT/shared/assets/image/icon-checkbox-unchecked-30-30.png);
background-size: 10px;
} .tip {
font-size: 12px;
color: #364152;
opacity: 0.4;
line-height: 18px;
margin-left: 3px;
}
} .single-checkbox-component-wrap {
&.theme-dark {
&.checked {
.icon {
background-image: url(~ROOT/shared/assets/image/icon-checkbox-checked-white-30-30.png);
}
} .icon {
background-image: url(~ROOT/shared/assets/image/icon-checkbox-unchecked-white-30-30.png);
} .tip {
color: #ffffff;
}
}
}

单选按钮(CheckBox)的更多相关文章

  1. unity3d插件Daikon Forge GUI 中文教程4-高级控件Checkbox和dropdownlis的使用

    第三节  高级的控件 Checkbox单选和多选.dropdownlis下拉列表.listbox列表框.progressbar进度条.richtextlabel富文本.slider滑块.textbox ...

  2. [ PyQt入门教程 ] PyQt5基本控件使用:单选按钮、复选框、下拉框

    本文主要介绍PyQt5界面最基本使用的单选按钮.复选框.下拉框三种控件的使用方法进行介绍. 1.RadioButton单选按钮/CheckBox复选框.需要知道如何判断单选按钮是否被选中. 2.Com ...

  3. 十分钟玩转 jQuery、实例大全

    一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery对象 jQuery产 ...

  4. JQuery的核心的一些方法[扒来的]

    JQuery的核心的一些方法 each(callback) '就像循环 $("Element").length; ‘元素的个数,是个属性 $("Element" ...

  5. 基础2.Jquery过滤选择器

                         1.基础选择器: 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的 ...

  6. Python之路Day17-jQuery

    本节内容: jQuery 参考:http://jquery.cuishifeng.cn/ 模块  <==>类库 Dom/Bom/JavaScript的类库 版本:1.x   1.12 2. ...

  7. 玩转Jquery,告别前端知道思路忘记知识点的痛苦

    本节内容: 本章主要讲解一下jquery,主要是工作中用的前端框架是datetables框架,然后datetables框架又是基于jqeury研发的,所以要想学一个东西,就必须要了解其底层,不然走路都 ...

  8. jquery简介和实例

    一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库. 参考:http://www.php100 ...

  9. HTML5-02 元素

    概述 HTML 文档主要由元素组成,且主要分为两大部分:头部 和 主体.如图: 头部 概述 <head> 元素包含了所有的头部标签.<head> 元素中通常包含脚本(scrip ...

  10. FeWeb基础之JavaScript简介

    FeWeb基础之JavaScript简介 1.JavaScript的基本介绍 JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,它是通过嵌入或调入在标准的HTML语言中实现的.Ja ...

随机推荐

  1. java判断A字符串中是否包含B字符

    java.lang.String类提供的方法 public boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true. 例如: ...

  2. 数据缺失值的处理 | R包 - mice

    有些情况下缺失值会零星的分布在数据当中,这时去掉所有包含缺失值的样本就不行了,直接用0去填补缺失值也不行. 所以此时就应该用拟合的方法来填补缺失值. library(mice) init = mice ...

  3. Linux系列 | Ubuntu 各版本号和名称对照【转】

    转载处:https://blog.csdn.net/songfulu/article/details/85310273   版本 开发代号 中译 发布日期 支持结束时间 内核版本 桌面版 服务器版 4 ...

  4. [root@offical nginx]# nginx -t nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so" version 1012002 instead of 1016001 in /usr/share/nginx/modules/mod-http-geoip.conf:1 nginx: con

    [root@offical nginx]# nginx -tnginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_mo ...

  5. PrivateIpAddresses Array of String 实例主网卡的内网IP列表。 PublicIpAddresses Array of String 实例主网卡的公网IP列表。 注意:此字段可能返回 null,表示取不到有效值。

    https://cloud.tencent.com/document/api/213/15753 浮动 IP 地址 https://cloud.google.com/solutions/best-pr ...

  6. 前端通用下载文件方法(兼容IE)

    之前在网上看到一个博主写的前端通用的下载文件的方法,个人觉得很实用,所以mark一下,方便以后查阅 源文地址(源文还有上传/下载excel文件方法) 因为项目要求要兼容IE浏览器,所以完善了一下之前博 ...

  7. Tomcat7/8/8.5三种版本的redis-session-manager的jar和xml配置均不同

    chexagon/redis-session-manager: A tomcat8 session manager providing session replication via persiste ...

  8. elasticsearch5.0.1集群索引分片丢失的处理

    elasticdump命令安装 yum install npm npm install elasticdump -g 命令安装完毕,可以测试. 可能会报出nodejs的版本之类的错误,你需要升级一下版 ...

  9. easyui前台改变datagrid某单元格的值

    有时候前台完成某个操作后要修改datagrid的值, 也许这个datagrid是没有保存的, 所以要修改后才能传递到后台; 也许要其他操作过后才需请求后台; 这些情况都需要前台对datagrid的单元 ...

  10. .net core 使用ClaimsIdentity实现登录授权

    一.新建用户 1.先新建一个用户表,用户存储用户信息. public class UserInfo { public const string Salt = "cesi"; [Ke ...