Skip to content

Commit fa70238

Browse files
Updated benchmark implementation
1 parent 6e87af3 commit fa70238

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

frameworks/keyed/voby/src/main.tsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,25 @@ const Model = (() => {
8686
$data.emit ();
8787
};
8888

89+
const dispose = (): void => {
90+
const data = $data ();
91+
for ( let i = 0, l = data.length; i < l; i++ ) {
92+
data[i].label.dispose ();
93+
}
94+
isSelected.dispose ();
95+
};
96+
8997
const clear = (): void => {
98+
dispose ();
9099
$data ( [] );
91100
};
92101

93102
const remove = ( id: number ): void => {
94103
const data = $data ();
95104
const index = data.findIndex ( datum => datum.id === id );
96105
if ( index === -1 ) return;
106+
const datum = data[index];
107+
datum.label.dispose ();
97108
data.splice ( index, 1 );
98109
$data.emit ();
99110
};
@@ -102,7 +113,9 @@ const Model = (() => {
102113
$selected ( id );
103114
};
104115

105-
return { $data, $selected, run, runLots, runWith, add, update, swapRows, clear, remove, select };
116+
const isSelected = useSelector ( $selected );
117+
118+
return { $data, $selected, run, runLots, runWith, add, update, swapRows, dispose, clear, remove, select, isSelected };
106119

107120
})();
108121

@@ -114,7 +127,7 @@ const Button = ({ id, text, onClick }: { id: string | number, text: string, onCl
114127
</div>
115128
);
116129

117-
const RowDynamic = ({ id, label, className, onSelect, onRemove }: { id: FunctionMaybe<string | number>, label: FunctionMaybe<string>, className: FunctionMaybe<string>, onSelect: ObservableMaybe<(( event: MouseEvent ) => any)>, onRemove: ObservableMaybe<(( event: MouseEvent ) => any)> }): JSX.Element => (
130+
const Row = template (({ id, label, className, onSelect, onRemove }: { id: FunctionMaybe<string | number>, label: FunctionMaybe<string>, className: FunctionMaybe<string>, onSelect: ObservableMaybe<(( event: MouseEvent ) => any)>, onRemove: ObservableMaybe<(( event: MouseEvent ) => any)> }): JSX.Element => (
118131
<tr className={className}>
119132
<td class="col-md-1">{id}</td>
120133
<td class="col-md-4">
@@ -127,14 +140,11 @@ const RowDynamic = ({ id, label, className, onSelect, onRemove }: { id: Function
127140
</td>
128141
<td class="col-md-6"></td>
129142
</tr>
130-
);
131-
132-
const RowTemplate = template ( RowDynamic, { recycle: false } );
143+
));
133144

134145
const App = (): JSX.Element => {
135146

136-
const {$data, $selected, run, runLots, add, update, clear, swapRows, select, remove} = Model;
137-
const isSelected = useSelector ( $selected );
147+
const {$data, run, runLots, add, update, swapRows, clear, remove, select, isSelected} = Model;
138148

139149
return (
140150
<div class="container">
@@ -164,8 +174,7 @@ const App = (): JSX.Element => {
164174
const onSelect = select.bind ( undefined, id );
165175
const onRemove = remove.bind ( undefined, id );
166176
const props = {id, label, className, onSelect, onRemove};
167-
return RowTemplate ( props );
168-
// return RowDynamic ( props );
177+
return Row ( props );
169178
}}
170179
</For>
171180
</tbody>

0 commit comments

Comments
 (0)