MCPcopy Create free account
hub / github.com/alexkatz/react-tiny-popover / useMemoizedArray

Function useMemoizedArray

src/useMemoizedArray.ts:3–24  ·  view source on GitHub ↗
(externalArray: T[])

Source from the content-addressed store, hash-verified

1import { useRef, useMemo } from 'react';
2
3export const useMemoizedArray = <T extends number | string>(externalArray: T[]) => {
4 const prevArrayRef = useRef(externalArray);
5 const array = useMemo(() => {
6 if (prevArrayRef.current === externalArray) return prevArrayRef.current;
7
8 if (prevArrayRef.current.length !== externalArray.length) {
9 prevArrayRef.current = externalArray;
10 return externalArray;
11 }
12
13 for (let i = 0; i < externalArray.length; i += 1) {
14 if (externalArray[i] !== prevArrayRef.current[i]) {
15 prevArrayRef.current = externalArray;
16 return externalArray;
17 }
18 }
19
20 return prevArrayRef.current;
21 }, [externalArray]);
22
23 return array;
24};

Callers 1

Popover.tsxFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…