react实现复选框全选和反选组件效果
更新时间:2020年08月25日 11:01:45 作者:#麻辣小龙虾#
这篇文章主要为大家详细介绍了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);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
在Create React App中使用CSS Modules的方法示例
本文介绍了如何在 Create React App 脚手架中使用 CSS Modules 的两种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。2019-01-01
React SSR架构Stream Rendering与Suspense for Data Fetching
这篇文章主要为大家介绍了React SSR架构Stream Rendering与Suspense for Data Fetching解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03
React antd中setFieldsValu的简便使用示例代码
form.setFieldsValue是antd Form组件中的一个方法,用于动态设置表单字段的值,它接受一个对象作为参数,对象的键是表单字段的名称,值是要设置的字段值,这篇文章主要介绍了React antd中setFieldsValu的简便使用,需要的朋友可以参考下2023-08-08


最新评论