todo-app
1import { useState, useEffect } from 'react';
2import { useResizeObserver, useDebouncedValue } from '@mantine/hooks';
3import { nanoid } from 'nanoid';
4
5/**
6* https://github.com/mantinedev/mantine/issues/3330
7*/
8export const useDelayedKeyOnResize = (delay = 0) => {
9const [key, setKey] = useState(nanoid());
10const [ref, rect] = useResizeObserver();
11const [debouncedRect] = useDebouncedValue(rect, delay);
12
13useEffect(() => {
14setKey(nanoid());
15}, [debouncedRect]);
16
17return { ref, key };
18};
19