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 相关文章推荐
Js 正则表达式知识汇总
Dec 02 Javascript
node.js中的buffer.write方法使用说明
Dec 10 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
jQuery中Datatables增加跳转到指定页功能
Feb 08 Javascript
深入浅析Node.js单线程模型
Jul 10 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
详解webpack+ES6+Sass搭建多页面应用
Nov 05 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
Aug 16 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
Apr 10 Javascript
vue实现商品列表的添加删除实例讲解
May 14 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
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
protractor的安装与基本使用教程
2017/07/07 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
Vuex提升学习篇
2018/01/11 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
How TDD works
2012/09/30 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
组工干部演讲稿
2014/09/02 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
委托函范文
2015/01/29 职场文书
简历自我评价模板
2015/03/11 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python