blob: d379e720746f217b0b4d77a6af02541c29a2c144 (
plain)
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
|
import { useState } from "react";
function useArrayState<T>(initialValue: T[]) {
const [value, setValue] = useState(initialValue);
function add(item: any) {
setValue((prev) => [...prev, item]);
}
function remove(index: number) {
setValue((prev) => prev.filter((_, i) => i !== index));
}
function edit(editFn: (prev: T[]) => T[]) {
setValue((prev) => editFn(prev));
}
function replace(atIndex: number, withItem: T) {
setValue((prev) => {
let updated = [...prev];
updated[atIndex] = withItem;
return updated;
});
}
return { value, add, remove, edit, replace };
}
export default useArrayState;
|