react实现复选框全选和反选组件效果

本文实例为大家分享了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); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容