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);

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

以上是 react实现复选框全选和反选组件效果 的全部内容, 来源链接: utcz.com/p/217636.html

回到顶部