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技术-屏蔽类
Aug 15 Javascript
关于jquery append() html时的小问题的解决方法
Dec 16 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
3分钟了解vue数据劫持的原理实现
May 01 Javascript
微信小程序实现订单倒计时
Nov 01 Javascript
Vue实现购物车详情页面的方法
Aug 20 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
Jul 11 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面向对象 字段的声明与使用
2012/06/14 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
JS 遮照层实现代码
2010/03/31 Javascript
js对象的比较
2011/02/26 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
ajax异步请求详解
2017/01/06 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
在MAC上搭建python数据分析开发环境
2016/01/26 Python
python安装教程
2018/02/28 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
python3 实现口罩抽签的功能
2020/03/11 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
化学教师自荐信范文
2013/12/28 职场文书
教学大赛获奖感言
2014/01/15 职场文书
旷课检讨书大全
2014/01/21 职场文书
合作意向协议书范本
2014/03/31 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
六一亲子活动感想
2015/08/07 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
python实现简单的名片管理系统
2021/04/26 Python