c5b51a9b33
- 补充 i18n 翻译键(generateMode, parseMode, pasteHint 等) - 创建 useDebounce Hook 实现输入防抖 (200ms) - 使用 useRef 解决 useEffect 无限循环问题 - 编写 pages/QrCode 单元测试 (7 个用例) - 优化右键菜单错误处理,改进用户提示 - 运行 603 个测试全部通过
25 lines
533 B
TypeScript
25 lines
533 B
TypeScript
import { useState, useEffect } from 'react';
|
|
|
|
/**
|
|
* useDebounce Hook - 防抖值
|
|
*
|
|
* @param value - 需要防抖的值
|
|
* @param delay - 延迟时间(毫秒)
|
|
* @returns 防抖后的值
|
|
*/
|
|
export function useDebounce<T>(value: T, delay: number): T {
|
|
const [debouncedValue, setDebouncedValue] = useState<T>(value);
|
|
|
|
useEffect(() => {
|
|
const timer = setTimeout(() => {
|
|
setDebouncedValue(value);
|
|
}, delay);
|
|
|
|
return () => {
|
|
clearTimeout(timer);
|
|
};
|
|
}, [value, delay]);
|
|
|
|
return debouncedValue;
|
|
}
|