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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
Mar 16 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
javascript使用location.search的示例
Nov 05 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
JavaScript中的比较操作符&gt;、=、
Dec 31 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
JS常用函数和常用技巧小结
Oct 15 Javascript
微信小程序 天气预报开发实例代码源码
Jan 20 Javascript
angular ng-repeat数组中的数组实例
Feb 18 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
Nov 03 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程序的方法
2009/03/09 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
angular.element方法汇总
2015/01/07 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
在javascript中创建对象的各种模式解析
2016/05/16 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
js数组去重的hash方法
2016/12/22 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
Python实现的文本编辑器功能示例
2017/06/30 Python
Python reduce()函数的用法小结
2017/11/15 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python Selenium截图功能实现代码
2020/04/26 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
2015年重阳节活动主持词
2015/07/30 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python