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 相关文章推荐
[原创]图片分页查看
Aug 28 Javascript
正则表达式搭配js轻松处理json文本方便而老古
Feb 17 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
浅谈json取值(对象和数组)
Jun 24 Javascript
AngularJS基础 ng-submit 指令简单示例
Aug 03 Javascript
微信小程序-消息提示框实例
Nov 24 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
原生js实现放大镜特效
Mar 08 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
Vuex中mutations与actions的区别详解
Mar 01 Javascript
vue 集成jTopo 处理方法
Aug 07 Javascript
JS原生实现轮播图的几种方法
Mar 23 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
用Socket发送电子邮件
2006/10/09 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
python实现提取百度搜索结果的方法
2015/05/19 Python
python中set常用操作汇总
2016/06/30 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
python读取图片任意范围区域
2019/01/23 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
详细分析Python垃圾回收机制
2020/07/01 Python
高中物理教学反思
2014/02/08 职场文书
欢迎领导检查标语
2014/06/27 职场文书
安全先进班组材料
2014/12/26 职场文书
护士个人年终总结
2015/02/13 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js