@@ -53,9 +53,13 @@ export default function App() {
53
53
}
54
54
55
55
const swapRows = ( ) => {
56
- list . splice ( 1 , 1 , list . splice ( 998 , 1 , list [ 1 ] ) [ 0 ] )
56
+ if ( list . length >= 999 ) {
57
+ list . splice ( 1 , 1 , list . splice ( 998 , 1 , list [ 1 ] ) [ 0 ] )
58
+ }
57
59
}
58
60
61
+ const remove = ( id ) => list . splice ( list . findIndex ( ( z ) => z . id === id ) , 1 )
62
+
59
63
return (
60
64
< div className = "container" >
61
65
< div className = "jumbotron" >
@@ -87,20 +91,26 @@ export default function App() {
87
91
< table className = "table table-hover table-striped test-data" >
88
92
< tbody delta = { delta } >
89
93
{ list . map ( ( item ) => (
90
- < tr className = { selected === item . id ? "danger" : "" } >
91
- < td class = "col-md-1" > { item . id } </ td >
92
- < td class = "col-md-4" >
93
- < a onClick = { ( ) => setSelected ( item . id ) } > { item . label } </ a >
94
- </ td >
95
- < td class = "col-md-1" >
96
- < a onClick = { ( ) => list . splice ( list . findIndex ( ( z ) => z . id === item . id ) , 1 ) } > < span class = "glyphicon glyphicon-remove" aria-hidden = "true" > </ span > </ a >
97
- </ td >
98
- < td class = "col-md-6" />
99
- </ tr >
94
+ < Row item = { item } selected = { selected } remove = { remove } setSelected = { setSelected } />
100
95
) ) }
101
96
</ tbody >
102
97
</ table >
103
98
< span class = "preloadicon glyphicon glyphicon-remove" aria-hidden = "true" > </ span >
104
99
</ div >
105
100
) ;
101
+ }
102
+
103
+ function Row ( { item, selected, remove, setSelected } ) {
104
+ return (
105
+ < tr className = { selected === item . id ? "danger" : "" } >
106
+ < td class = "col-md-1" > { item . id } </ td >
107
+ < td class = "col-md-4" >
108
+ < a onClick = { ( ) => setSelected ( item . id ) } > { item . label } </ a >
109
+ </ td >
110
+ < td class = "col-md-1" >
111
+ < a onClick = { ( ) => remove ( item . id ) } > < span class = "glyphicon glyphicon-remove" aria-hidden = "true" > </ span > </ a >
112
+ </ td >
113
+ < td class = "col-md-6" />
114
+ </ tr >
115
+ )
106
116
}
0 commit comments