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 相关文章推荐
看了就知道什么是JSON
Dec 09 Javascript
JavaScript 提升运行速度之循环篇 译文
Aug 15 Javascript
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 Javascript
iScroll.js 使用方法参考
May 16 Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
微信小程序之蓝牙的链接
Sep 26 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
微信小程序的tab选项卡的实现效果
May 15 Javascript
解决vue scoped html样式无效的问题
Oct 24 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利用cookies实现购物车的方法
2014/12/10 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
PHP多进程简单实例小结
2019/11/09 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
Javascript 写的简单进度条控件
2008/01/22 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
JS正则表达式验证中文字符
2017/05/08 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
解决vue scoped scss 无效的问题
2020/09/04 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
Python 读写文件的操作代码
2018/09/20 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
Python谱减法语音降噪实例
2019/12/18 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
酒店门卫岗位职责
2013/12/29 职场文书
酒店销售主管岗位职责
2014/01/04 职场文书
教师党员公开承诺书
2014/03/25 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python