UNPKG

hooks-me

Version:

<div align="center"> <h1>hooks-me</h1> <div>React useful hooks.</div>

33 lines (32 loc) 1.47 kB
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; import { useState } from "react"; var useArray = function (defaultValue) { var _a = useState(defaultValue), array = _a[0], setArray = _a[1]; var push = function (item) { setArray(function (old) { return __spreadArray(__spreadArray([], old, true), [item], false); }); }; var update = function (index, item) { setArray(function (a) { return __spreadArray(__spreadArray(__spreadArray([], a.slice(0, index), true), [ item ], false), a.slice(index + 1, a.length), true); }); }; var remove = function (index) { setArray(function (currentValue) { return __spreadArray(__spreadArray([], currentValue.slice(0, index), true), currentValue.slice(index + 1, currentValue.length), true); }); }; var filter = function (predicate) { setArray(function (currentValue) { return currentValue.filter(predicate); }); }; var clear = function () { setArray([]); }; return { value: array, push: push, update: update, remove: remove, filter: filter, set: setArray, clear: clear }; }; export default useArray;