1
- import { h , render , useReducer , useCallback } from "fre"
1
+ import { h , render , useReducer , useCallback , memo } from "fre"
2
2
3
3
function random ( max ) {
4
4
return Math . round ( Math . random ( ) * 1000 ) % max
@@ -93,17 +93,7 @@ function listReducer(state, action) {
93
93
case "CLEAR" :
94
94
return { data : [ ] , selected : 0 }
95
95
case "SWAP_ROWS" :
96
- return data . length > 998
97
- ? {
98
- data : [
99
- data [ 0 ] ,
100
- data [ 998 ] ,
101
- ...data . slice ( 2 , 998 ) ,
102
- data [ 1 ] ,
103
- data [ 999 ] ,
104
- ] ,
105
- }
106
- : state
96
+ return data . length > 998 ? { data : [ data [ 0 ] , data [ 998 ] , ...data . slice ( 2 , 998 ) , data [ 1 ] , data [ 999 ] ] , selected } : state
107
97
case "REMOVE" :
108
98
const idx = data . findIndex ( ( d ) => d . id === action . id )
109
99
return { data : [ ...data . slice ( 0 , idx ) , ...data . slice ( idx + 1 ) ] , selected }
@@ -113,7 +103,7 @@ function listReducer(state, action) {
113
103
return state
114
104
}
115
105
116
- const Row = ( { selected, item, dispatch } ) => {
106
+ const Row = memo ( ( { selected, item, dispatch, id } ) => {
117
107
return (
118
108
< tr className = { selected ? "danger" : "" } >
119
109
< td className = "col-md-1" > { item . id } </ td >
@@ -129,7 +119,7 @@ const Row = ({ selected, item, dispatch }) => {
129
119
< td className = "col-md-6" />
130
120
</ tr >
131
121
)
132
- }
122
+ } )
133
123
134
124
const Button = ( { id, cb, title } ) => (
135
125
< div className = "col-sm-6 smallpad" >
@@ -145,7 +135,7 @@ const Button = ({ id, cb, title }) => (
145
135
)
146
136
147
137
148
- const Jumbotron = ( { dispatch } ) => (
138
+ const Jumbotron = memo ( ( { dispatch } ) => (
149
139
< div className = "jumbotron" >
150
140
< div className = "row" >
151
141
< div className = "col-md-6" >
@@ -187,7 +177,7 @@ const Jumbotron = ({ dispatch }) => (
187
177
</ div >
188
178
</ div >
189
179
</ div >
190
- )
180
+ ) )
191
181
192
182
const Main = ( ) => {
193
183
const [ state , setState ] = useReducer ( listReducer , { data : [ ] , selected : 0 } )
@@ -215,4 +205,4 @@ const Main = () => {
215
205
)
216
206
}
217
207
218
- render ( < Main /> , document . getElementById ( "main" ) , { sync : true } )
208
+ render ( < Main /> , document . getElementById ( "main" ) )
0 commit comments