react實(shí)現(xiàn)復(fù)選框全選和反選組件效果
本文實(shí)例為大家分享了react實(shí)現(xiàn)復(fù)選框全選和反選組件的具體代碼,供大家參考,具體內(nèi)容如下
運(yùn)行效果圖如下:

代碼:
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的標(biāo)題',
content: '我是內(nèi)容部分部分',
chooseAll: false, // 全選標(biāo)志
inters: ['bsball', 'ymball', 'fbball'], // 頁(yè)面加載默認(rèn)選中項(xiàng)
intersAll: ['bsball', 'ymball', 'ppball', 'fbball'],
fchoose: false // 正反選標(biāo)志
};
}
// 全選
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
})
);
}
// 點(diǎn)擊復(fù)選框
chooseInter (event) {
let val = event.target.value;
let checked = event.target.checked;
let {inters} = this.state;
// event.stopPropagation();
// 選中復(fù)選框并且值不在數(shù)組里面
if (checked && !this.state.inters.includes(val)) {
inters.push(val);
} else {
// 取消選中的選項(xiàng)
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 = []; // 反選結(jié)果
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);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用react-beautiful-dnd實(shí)現(xiàn)列表間拖拽踩坑
相比于react-dnd,react-beautiful-dnd更適用于列表之間拖拽的場(chǎng)景,本文主要介紹了使用react-beautiful-dnd實(shí)現(xiàn)列表間拖拽踩坑,感興趣的可以了解一下2021-05-05
詳解Webpack+Babel+React開(kāi)發(fā)環(huán)境的搭建的方法步驟
本篇文章主要介紹了詳解Webpack+Babel+React開(kāi)發(fā)環(huán)境的搭建的方法步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
react+antd 遞歸實(shí)現(xiàn)樹(shù)狀目錄操作
這篇文章主要介紹了react+antd 遞歸實(shí)現(xiàn)樹(shù)狀目錄操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
解決React報(bào)錯(cuò)JSX?element?type?does?not?have?any?construct
這篇文章主要為大家介紹了解決React報(bào)錯(cuò)JSX?element?type?does?not?have?any?construct?or?call?signatures,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
react清空ant.design中表單內(nèi)容的方法實(shí)現(xiàn)
本文主要介紹了react清空ant.design中表單內(nèi)容的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12

