react-hook-array
Advanced tools
| import React from "react"; | ||
| export declare const useArray: <T>(initialValue: T[]) => readonly [T[], React.Dispatch<React.SetStateAction<T[]>>, (index: number, value: T) => void, (value: T) => void, () => T]; |
+31
| "use strict"; | ||
| 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)); | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| exports.__esModule = true; | ||
| exports.useArray = void 0; | ||
| var react_1 = __importDefault(require("react")); | ||
| var useArray = function (initialValue) { | ||
| var _a = react_1["default"].useState(initialValue), arr = _a[0], setArr = _a[1]; | ||
| var setArrByIndex = react_1["default"].useCallback(function (index, value) { | ||
| return setArr(function (oldArr) { return oldArr.map(function (x, idx) { return (idx === index ? value : x); }); }); | ||
| }, [setArr]); | ||
| var pushArr = react_1["default"].useCallback(function (value) { return setArr(function (oldArr) { return __spreadArray(__spreadArray([], oldArr, true), [value], false); }); }, [setArr]); | ||
| var popArr = react_1["default"].useCallback(function () { | ||
| // Will return undefined if array has length 0 | ||
| var last = arr[arr.length - 1]; | ||
| setArr(function (oldArr) { return oldArr.filter(function (x, idx) { return idx !== arr.length - 1; }); }); | ||
| return last; | ||
| }, [arr, setArr]); | ||
| return [arr, setArr, setArrByIndex, pushArr, popArr]; | ||
| }; | ||
| exports.useArray = useArray; |
+5
-36
| { | ||
| "name": "react-hook-array", | ||
| "version": "0.1.0", | ||
| "version": "0.1.1", | ||
| "dependencies": { | ||
| "@types/react": "^18.0.0", | ||
| "react": "^18.2.0", | ||
| "typescript": "^4.4.2" | ||
| "react": "^18.2.0" | ||
| }, | ||
| "files": [ | ||
| "useArray.ts" | ||
| ], | ||
| "devDependencies": { | ||
| "@types/node": "^16.7.13", | ||
| "@types/react-dom": "^18.0.0", | ||
| "react-dom": "^18.2.0", | ||
| "react-scripts": "5.0.1" | ||
| }, | ||
| "scripts": { | ||
| "start": "react-scripts start", | ||
| "build": "react-scripts build", | ||
| "test": "react-scripts test", | ||
| "eject": "react-scripts eject" | ||
| }, | ||
| "eslintConfig": { | ||
| "extends": [ | ||
| "react-app", | ||
| "react-app/jest" | ||
| ] | ||
| }, | ||
| "browserslist": { | ||
| "production": [ | ||
| ">0.2%", | ||
| "not dead", | ||
| "not op_mini all" | ||
| ], | ||
| "development": [ | ||
| "last 1 chrome version", | ||
| "last 1 firefox version", | ||
| "last 1 safari version" | ||
| ] | ||
| } | ||
| "useArray.js", | ||
| "useArray.d.ts" | ||
| ] | ||
| } |
-27
| import React from "react"; | ||
| export const useArray = <T,>(initialValue: T[]) => { | ||
| const [arr, setArr] = React.useState(initialValue); | ||
| const setArrByIndex = React.useCallback( | ||
| (index: number, value: T) => | ||
| setArr((oldArr) => oldArr.map((x, idx) => (idx === index ? value : x))), | ||
| [setArr] | ||
| ); | ||
| const pushArr = React.useCallback( | ||
| (value: T) => setArr((oldArr) => [...oldArr, value]), | ||
| [setArr] | ||
| ); | ||
| const popArr = React.useCallback(() => { | ||
| // Will return undefined if array has length 0 | ||
| const last = arr[arr.length - 1]; | ||
| setArr((oldArr) => oldArr.filter((x, idx) => idx !== arr.length - 1)); | ||
| return last; | ||
| }, [arr, setArr]); | ||
| return [arr, setArr, setArrByIndex, pushArr, popArr] as const; | ||
| }; |
1949
24.3%1
-66.67%0
-100%4
33.33%33
65%- Removed
- Removed
- Removed
- Removed
- Removed
- Removed