@@ -120,35 +120,29 @@ const getSelect = (state) => state.select
120
120
const getRemove = ( state ) => state . remove
121
121
122
122
const Row = memo (
123
- ( { itemId } ) => {
123
+ ( { item } ) => {
124
124
const select = useStore ( getSelect )
125
125
const remove = useStore ( getRemove )
126
- const itemLabel = useStore (
127
- useCallback (
128
- ( state ) => state . data . find ( ( item ) => item . id === itemId ) . label ,
129
- [ itemId ]
130
- )
131
- )
132
126
const isSelected = useStore (
133
- useCallback ( ( state ) => state . selected === itemId , [ itemId ] )
127
+ useCallback ( ( state ) => state . selected === item . id , [ item . id ] )
134
128
)
135
129
136
130
return (
137
131
< tr className = { isSelected ? "danger" : "" } >
138
- < td className = "col-md-1" > { itemId } </ td >
132
+ < td className = "col-md-1" > { item . id } </ td >
139
133
< td className = "col-md-4" >
140
- < a onClick = { ( ) => select ( itemId ) } > { itemLabel } </ a >
134
+ < a onClick = { ( ) => select ( item . id ) } > { item . label } </ a >
141
135
</ td >
142
136
< td className = "col-md-1" >
143
- < a onClick = { ( ) => remove ( itemId ) } >
137
+ < a onClick = { ( ) => remove ( item . id ) } >
144
138
< span className = "glyphicon glyphicon-remove" aria-hidden = "true" />
145
139
</ a >
146
140
</ td >
147
141
< td className = "col-md-6" />
148
142
</ tr >
149
143
)
150
144
} ,
151
- ( prevProps , nextProps ) => prevProps . itemId === nextProps . itemId
145
+ ( prevProps , nextProps ) => prevProps . item === nextProps . item
152
146
)
153
147
154
148
const Button = ( { id, cb, title } ) => (
@@ -211,21 +205,21 @@ const Jumbotron = memo(
211
205
( ) => true
212
206
)
213
207
214
- const getIds = ( state ) => state . data . map ( ( el ) => el . id )
208
+ const getItems = ( state ) => state . data
215
209
216
210
const Main = ( ) => {
217
211
/**
218
212
* @type {string[] }
219
213
*/
220
- const ids = useStore ( getIds , shallow )
214
+ const items = useStore ( getItems , shallow )
221
215
222
216
return (
223
217
< div className = "container" >
224
218
< Jumbotron />
225
219
< table className = "table table-hover table-striped test-data" >
226
220
< tbody >
227
- { ids . map ( ( id , i ) => (
228
- < Row key = { id } itemId = { id } />
221
+ { items . map ( ( item ) => (
222
+ < Row key = { item . id } item = { item } />
229
223
) ) }
230
224
</ tbody >
231
225
</ table >
0 commit comments