@supunlakmal/hooks
Version:
A collection of reusable React hooks
35 lines • 1.18 kB
JavaScript
import { useState, useCallback } from 'react';
export function useListState(initialState = []) {
const [list, setList] = useState(initialState);
const push = useCallback((item) => {
setList((prevList) => [...prevList, item]);
}, []);
const filter = useCallback((callback) => {
setList((prevList) => prevList.filter(callback));
}, []);
const update = useCallback((index, newItem) => {
setList((prevList) => {
const newList = [...prevList];
if (index >= 0 && index < newList.length) {
newList[index] = newItem;
}
return newList;
});
}, []);
const remove = useCallback((index) => {
setList((prevList) => {
if (index >= 0 && index < prevList.length) {
return prevList.filter((_, i) => i !== index);
}
return prevList;
});
}, []);
const set = useCallback((newList) => {
setList(newList);
}, []);
const clear = useCallback(() => {
setList([]);
}, []);
return [list, push, filter, update, remove, set, clear];
}
//# sourceMappingURL=useListState.js.map