hooks-me
Version:
<div align="center"> <h1>hooks-me</h1> <div>React useful hooks.</div>
33 lines (32 loc) • 1.47 kB
JavaScript
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;