-
Notifications
You must be signed in to change notification settings - Fork 136
/
Copy pathindex.tsx
37 lines (33 loc) · 971 Bytes
/
index.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { Component, For, createSignal } from "solid-js";
import { createArraySelector } from "../src/index.js";
const items = [1, 2, 3];
const App: Component = () => {
const [selectedItems, setSelectedItems] = createSignal<number[]>([]);
const isSelected = createArraySelector(selectedItems);
return (
<>
<For each={items}>
{item => (
<div>
<input
type="checkbox"
checked={isSelected(item)}
onChange={e => {
const filtered = selectedItems().filter(i => i === item);
if (e.currentTarget.checked) {
if (filtered.length === 0) {
setSelectedItems([...selectedItems(), item]);
}
} else {
setSelectedItems(filtered);
}
}}
/>
{item}
</div>
)}
</For>
</>
);
};
export default App;