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 年月日联动实现核心代码
Dec 21 Javascript
js控制frameSet示例
Sep 10 Javascript
用javascript判断IE版本号简单实用且向后兼容
Sep 11 Javascript
jquery submit ie6下失效的原因分析及解决方法
Nov 15 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
javascript input输入框模糊提示功能的实现
Sep 25 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
Vue.js组件高级特性实例详解
Dec 24 Javascript
详解关于html,css,js三者的加载顺序问题
Apr 10 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
js实现继承的5种方式
2015/12/01 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
Python语言进阶知识点总结
2019/05/28 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
教师读书活动总结
2014/05/07 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
大学生村官个人总结
2015/02/15 职场文书
小学教学工作总结2015
2015/05/13 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
golang连接MySQl使用sqlx库
2022/04/14 Golang
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL