@@ -6,23 +6,32 @@ import { useCallback, useState } from 'react';
6export default function useArray(initialItems = [], itemBuilder) {
6export default function useArray(initialItems = [], itemBuilder) {
7 const [items, _setItems] = useState(initialItems);
7 const [items, _setItems] = useState(initialItems);
9+ const append = useCallback(
9− const append = () => _setItems(items => [...items, itemBuilder()]);
10+ () => _setItems(items => [...items, itemBuilder()]),
11+ [_setItems, itemBuilder]
11− const removeAt = i =>
14+ const removeAt = useCallback(
12− _setItems(items => {
16+ _setItems(items => {
13− const newItems = [...items.slice(0, i), ...items.slice(i + 1)];
17+ const newItems = [...items.slice(0, i), ...items.slice(i + 1)];
14− return newItems;
18+ return newItems;
17− const updateAt = (i, update = {}) =>
23+ const updateAt = useCallback(
18− _setItems(items => [
25+ _setItems(items => [
19− ...items.slice(0, i),
26+ ...items.slice(0, i),
21− ...items[i],
28+ ...items[i],
22− ...update,
29+ ...update,
24− ...items.slice(i + 1),
31+ ...items.slice(i + 1),