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 相关文章推荐
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 Javascript
详解Angular如何正确的操作DOM
Jul 06 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
vue打包相关细节整理(小结)
Sep 28 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
vue 在methods中调用mounted的实现操作
Aug 07 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
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Python 流程控制实例代码
2009/09/25 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python简易远程控制单线程版
2018/06/20 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
团员学习总结的自我评价范文
2013/10/14 职场文书
最热门的自我评价
2013/12/30 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
银行求职信怎么写
2014/05/26 职场文书
植树造林的宣传标语
2014/06/23 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
会议欢迎词
2015/01/23 职场文书
爱心募捐通知范文
2015/04/27 职场文书
离婚代理词范文
2015/05/23 职场文书
元旦主持词开场白
2015/05/29 职场文书
干部培训简讯
2015/07/20 职场文书
聘任合同书
2015/09/21 职场文书