react实现复选框全选和反选组件效果


Posted in Javascript onAugust 25, 2020

本文实例为大家分享了react实现复选框全选和反选组件的具体代码,供大家参考,具体内容如下

运行效果图如下:

react实现复选框全选和反选组件效果

代码:

import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
// import Menu from '../menu/Menu.jsx';
class List extends Component {
 constructor () {
 super();
 this.state = {
  title: '我是List的标题',
  content: '我是内容部分部分',
  chooseAll: false, // 全选标志
  inters: ['bsball', 'ymball', 'fbball'], // 页面加载默认选中项
  intersAll: ['bsball', 'ymball', 'ppball', 'fbball'],
  fchoose: false // 正反选标志
 };
 }
 // 全选
 chooseAll (event) {
 let {checked, value} = event.target;
 let chooseAll = this.state.inters.length === 4 ? true : false;
 let inters = ['bsball', 'ymball', 'ppball', 'fbball'];
 checked ? (
  this.setState({
  inters,
  chooseAll: checked
  })
 ) : (
  this.setState({
  inters: [],
  chooseAll: checked
  })
 );
 }
 // 点击复选框
 chooseInter (event) {
 let val = event.target.value;
 let checked = event.target.checked;
 let {inters} = this.state;
 // event.stopPropagation();
 // 选中复选框并且值不在数组里面
 if (checked && !this.state.inters.includes(val)) {
  inters.push(val);
 } else {
  // 取消选中的选项
  inters = inters.filter(v => val !== v);
 }
 let chooseAll = inters.length === 4 ? true : false;
 console.log(inters);
 this.setState({
  inters,
  chooseAll
 });
 }
 // 反选处理
 fchooseHandle (event) {
 let {checked, value} = event.target;
 let {inters, intersAll} = this.state;
 let chooseAll = this.state.inters.length === 4 ? true : false;
 let arr = []; // 反选结果
 this.setState({
  fchoose: checked,
  chooseAll
 });
 intersAll.forEach(item => {
  if (!inters.includes(item)) {
  arr.push(item);
  }
 });
 this.setState({
  inters: arr
 });
 }
 componentWillMount () {
 let chooseAll = this.state.inters.length === 4 ? true : false;
 this.setState({
  chooseAll
 });
 }
 render () {
 return (
  <div className="list">
  {/* <Menu /> */}
  <h1>{this.state.title}</h1>
  <p>{this.state.content}</p>
  <p>
   <label>
   <input type="checkbox" value="bsball" checked={this.state.fchoose} onClick={this.fchooseHandle.bind(this)}/>{this.state.fchoose ? '取消反选' : '反选'}
   </label>
   <label>
   <input type="checkbox" value="bsball" checked={this.state.chooseAll} onClick={this.chooseAll.bind(this)}/>{this.state.chooseAll ? '取消全选' : '全选'}
   </label>
  </p>
  <p>
   <label>
   <input type="checkbox" value="bsball" checked={this.state.inters.includes('bsball')} onClick={this.chooseInter.bind(this)}/>篮球
   </label>
   <label>
   <input type="checkbox" value="ymball" checked={this.state.inters.includes('ymball')} onClick={this.chooseInter.bind(this)}/>羽毛球
   </label>
   <label>
   <input type="checkbox" value="ppball" checked={this.state.inters.includes('ppball')} onClick={this.chooseInter.bind(this)}/>兵乓球
   </label>
   <label>
   <input type="checkbox" value="fbball" checked={this.state.inters.includes('fbball')} onClick={this.chooseInter.bind(this)}/>足球
   </label>
  </p>
  </div>
 );
 }
}
export default withRouter(List);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript和ActionScript的交互实现代码
Aug 01 Javascript
在浏览器中获取当前执行的脚本文件名的代码
Jul 19 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
Jan 15 Javascript
Javascript 数组排序详解
Oct 22 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 Javascript
es6函数name属性功能与用法实例分析
Apr 18 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
js实现数字跳动到指定数字
Aug 25 #Javascript
js实现点击选项置顶动画效果
Aug 25 #Javascript
理解JavaScript中的对象
Aug 25 #Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 #Javascript
node.js基础知识汇总
Aug 25 #Javascript
基于JS实现快速读取TXT文件
Aug 25 #Javascript
Vue实现简单的拖拽效果
Aug 25 #Javascript
You might like
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
javascript String 对象
2008/04/25 Javascript
JQuery 入门实例1
2009/06/25 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
测绘工程个人的自我评价
2013/11/23 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
旅游项目合作意向书
2015/05/08 职场文书
医德医风学习心得体会
2016/01/25 职场文书
幼儿园大班教师评语
2019/06/21 职场文书