本文實(shí)例為大家分享了react實(shí)現(xiàn)復(fù)選框全選和反選組件的具體代碼,供大家參考,具體內(nèi)容如下
運(yùn)行效果圖如下:
代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
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' ], // 頁面加載默認(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í)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/CodingNoob/article/details/88106500