Files
Dorod-Sky/skyvern-frontend/src/hooks/useRerender.ts

35 lines
573 B
TypeScript
Raw Normal View History

import { useState } from "react";
/**
* ```tsx
* const { bump, key } = useRerender({ delay: 40,prefix: "my-prefix" });
*
* <div key={key}>...</div>
*
* // somewhere else
* bump();
* ```
*/
const useRerender = ({
delay = 40,
prefix,
}: {
delay?: number;
prefix: string;
}) => {
const [forceRenderKey, setForceRenderKey] = useState(`${prefix}-0`);
const bump = () => {
setTimeout(() => {
setForceRenderKey((prev) => `${prefix}-${prev + 1}`);
}, delay);
};
return {
bump,
key: forceRenderKey,
};
};
export { useRerender };