本文實例為大家分享了react實現復選框全選和反選組件的具體代碼,供大家參考,具體內容如下
運行效果圖如下:
代碼:
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的標題' , 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); |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/CodingNoob/article/details/88106500