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