Skip to content

Commit 573ddfa

Browse files
committed
Update signals
1 parent 1031a28 commit 573ddfa

File tree

3 files changed

+35
-29
lines changed

3 files changed

+35
-29
lines changed

frameworks/keyed/preact-signals/package-lock.json

Lines changed: 9 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frameworks/keyed/preact-signals/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"url": "https://github.com/krausest/js-framework-benchmark.git"
2020
},
2121
"dependencies": {
22-
"@preact/signals": "^1.3.1",
22+
"@preact/signals": "^2.3.1",
2323
"preact": "^10.25.2"
2424
},
2525
"devDependencies": {

frameworks/keyed/preact-signals/src/main.jsx

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { signal, batch } from "@preact/signals";
1+
import { signal, batch, useComputed } from "@preact/signals";
2+
import { For } from "@preact/signals/utils";
23
import { render, h } from "preact";
34

45
let idCounter = 1;
@@ -109,8 +110,8 @@ const run = () => {
109110
swapRows = () => {
110111
const d = data.value.slice();
111112
if (d.length > 998) {
112-
let tmp = d[1];
113-
d[1] = d[998];
113+
let tmp = {...d[1]};
114+
d[1] = {...d[998]};
114115
d[998] = tmp;
115116
data.value = d;
116117
}
@@ -124,6 +125,24 @@ const run = () => {
124125
selected.value = id;
125126
};
126127

128+
const Row = ({ id, label }) => {
129+
const rowClass = useComputed(() => selected.value === id ? "danger" : "");
130+
return (
131+
<tr class={rowClass}>
132+
<td class="col-md-1" textContent={id} />
133+
<td class="col-md-4">
134+
<a onClick={() => select(id)} textContent={label} />
135+
</td>
136+
<td class="col-md-1">
137+
<a onClick={() => remove(id)}>
138+
<span class="glyphicon glyphicon-remove" aria-hidden="true" />
139+
</a>
140+
</td>
141+
<td class="col-md-6" />
142+
</tr>
143+
)
144+
}
145+
127146
const App = () => {
128147
return (
129148
<div class="container">
@@ -146,20 +165,9 @@ const App = () => {
146165
</div>
147166
<table class="table table-hover table-striped test-data">
148167
<tbody>
149-
{data.value.map((row) => (
150-
<tr key={row.id} class={selected.value === row.id ? "danger" : ""}>
151-
<td class="col-md-1" textContent={row.id} />
152-
<td class="col-md-4">
153-
<a onClick={() => select(row.id)} textContent={row.label} />
154-
</td>
155-
<td class="col-md-1">
156-
<a onClick={() => remove(row.id)}>
157-
<span class="glyphicon glyphicon-remove" aria-hidden="true" />
158-
</a>
159-
</td>
160-
<td class="col-md-6" />
161-
</tr>
162-
))}
168+
<For each={data}>
169+
{(row) => <Row key={row.id} id={row.id} label={row.label} />}
170+
</For>
163171
</tbody>
164172
</table>
165173
<span class="preloadicon glyphicon glyphicon-remove" aria-hidden="true" />

0 commit comments

Comments
 (0)