@@ -64,7 +64,6 @@ const random = (max) => Math.round(Math.random() * 1000) % max;
64
64
65
65
let nextId = 1 ;
66
66
let list = [ ] ;
67
- let oldCache = { } ;
68
67
let selected = 0 ;
69
68
let main ;
70
69
@@ -132,29 +131,29 @@ const select = (id) => {
132
131
if ( prevBlock ) {
133
132
if ( prevBlock . props . id === id ) return ;
134
133
const { id : prevId , label } = prevBlock . props ;
135
- const row = Row (
136
- {
137
- id : prevId ,
138
- label,
139
- className : '' ,
140
- } ,
141
- String ( id )
134
+ prevBlock . patch (
135
+ Row (
136
+ {
137
+ id : prevId ,
138
+ label,
139
+ className : '' ,
140
+ } ,
141
+ String ( id )
142
+ )
142
143
) ;
143
- row . memo = [ label , false ] ;
144
- prevBlock . patch ( row ) ;
145
144
}
146
145
const block = main . children . find ( ( block ) => block . props . id === id ) ;
147
146
const { label } = block . props ;
148
- const row = Row (
149
- {
150
- id,
151
- label,
152
- className : 'danger' ,
153
- } ,
154
- String ( id )
147
+ block . patch (
148
+ Row (
149
+ {
150
+ id,
151
+ label,
152
+ className : 'danger' ,
153
+ } ,
154
+ String ( id )
155
+ )
155
156
) ;
156
- row . memo = [ label , true ] ;
157
- block . patch ( row ) ;
158
157
159
158
prevBlock = block ;
160
159
} ;
@@ -216,36 +215,6 @@ const Row = (() => {
216
215
} ;
217
216
} ) ( ) ;
218
217
219
- function render ( oldCache , newCache ) {
220
- return fragment (
221
- list . map ( ( item ) => {
222
- const isSelected = selected === item . id ;
223
- const id = String ( item . id ) ;
224
- const cachedItem = oldCache [ item . id ] ;
225
- if ( cachedItem ) {
226
- if (
227
- cachedItem . memo [ 0 ] === item . label &&
228
- cachedItem . memo [ 1 ] === isSelected
229
- ) {
230
- return ( newCache [ item . id ] = cachedItem ) ;
231
- }
232
- }
233
-
234
- const row = Row (
235
- {
236
- id : item . id ,
237
- label : item . label ,
238
- className : isSelected ? 'danger' : '' ,
239
- } ,
240
- id
241
- ) ;
242
- row . memo = [ item . label , isSelected ] ;
243
- newCache [ item . id ] = row ;
244
- return row ;
245
- } )
246
- ) ;
247
- }
248
-
249
218
( ( ) => {
250
219
new Block (
251
220
stringToDOM (
@@ -354,7 +323,18 @@ function render(oldCache, newCache) {
354
323
} ) ( ) ;
355
324
356
325
function update ( ) {
357
- let newCache = { } ;
358
- main . patch ( render ( oldCache , newCache ) ) ;
359
- oldCache = newCache ;
326
+ main . patch (
327
+ fragment (
328
+ list . map ( ( item ) =>
329
+ Row (
330
+ {
331
+ id : item . id ,
332
+ label : item . label ,
333
+ className : selected === item . id ? 'danger' : '' ,
334
+ } ,
335
+ String ( item . id )
336
+ )
337
+ )
338
+ )
339
+ ) ;
360
340
}
0 commit comments