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 相关文章推荐
认识延迟时间为0的setTimeout
May 16 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 Javascript
javascript的alert box在java中如何显示多行
May 18 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
Aug 16 Javascript
JavaScript按值删除数组元素的方法
Apr 24 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
深入浅析knockout源码分析之订阅
Jul 12 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
js实现自动图片轮播代码
Mar 22 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
前后端常见的几种鉴权方式(小结)
Aug 04 Javascript
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 02 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中__get()和__set()的用法实例详解
2013/06/04 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
JavaScript 数组详解
2013/10/10 Javascript
jQuery获取动态生成的元素示例
2014/06/15 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
在双python下设置python3为默认的方法
2018/10/31 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
师说教学反思
2014/02/07 职场文书
读书演讲主持词
2014/03/18 职场文书
国际贸易求职信
2014/07/05 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
中班上学期个人总结
2015/02/12 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
如何利用python实现Simhash算法
2022/06/28 Python