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 相关文章推荐
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
Oct 21 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
JS Attribute属性操作详解
May 19 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
Nov 09 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
Mar 04 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
css配合JavaScript实现tab标签切换效果
Oct 11 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 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
SSI指令
2006/11/25 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
Vue响应式原理详解
2017/04/18 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
JS二分查找算法详解
2017/11/01 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
Python中__new__与__init__方法的区别详解
2015/05/04 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
Python多继承原理与用法示例
2018/08/23 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python关于变量名的基础知识点
2020/03/03 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
Python里面如何实现tuple和list的转换
2012/06/13 面试题
个人作风纪律整顿整改措施
2014/10/25 职场文书
单位介绍信格式范文
2015/05/04 职场文书
董事长助理工作总结2015
2015/07/23 职场文书