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 相关文章推荐
JAVASCRIPT下判断IE与FF的比较简单的方式
Oct 17 Javascript
jquery 插件开发备注
Aug 27 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
JS实现的自定义水平滚动字体插件完整实例
Jun 17 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
Angularjs---项目搭建图文教程
Jul 08 Javascript
JavaScript利用Date实现简单的倒计时实例
Jan 12 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
vue+AI智能机器人回复功能实现
Jul 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
PHP个人网站架设连环讲(一)
2006/10/09 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
Python延时操作实现方法示例
2018/08/14 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
python and or用法详解
2019/06/26 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
优秀员工演讲稿
2014/05/19 职场文书
龙门石窟导游词
2015/02/02 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技