42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { Button, Form, Input } from 'antd';
|
||
import { useCodeManageContext } from './CodeManageContext';
|
||
import { ChangeEvent, useRef } from 'react';
|
||
|
||
export default function CodeManageSearchBase() {
|
||
const { setCurrentPage, searchRefetch, setSearchKeyword } = useCodeManageContext();
|
||
const debounceTimer = useRef<NodeJS.Timeout | null>(null);
|
||
const onSearch = (value: string) => {
|
||
console.log(value);
|
||
setSearchKeyword(value);
|
||
setCurrentPage(1)
|
||
searchRefetch()
|
||
};
|
||
const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||
// 设置表单值
|
||
setSearchKeyword(e.target.value);
|
||
// 设置页码为1,确保从第一页开始显示搜索结果
|
||
setCurrentPage(1);
|
||
// 使用防抖处理,避免频繁发送请求
|
||
if (debounceTimer.current) {
|
||
clearTimeout(debounceTimer.current);
|
||
}
|
||
debounceTimer.current = setTimeout(() => {
|
||
// 触发查询
|
||
searchRefetch();
|
||
}, 300); // 300毫秒的防抖延迟
|
||
};
|
||
return <>
|
||
<div className="py-4 mt-10 w-2/3 mx-auto">
|
||
<Form>
|
||
<Form.Item name="search" label="关键字搜索">
|
||
<Input.Search
|
||
placeholder="输入分享码或文件名"
|
||
enterButton
|
||
onSearch={onSearch}
|
||
onChange={onChange}
|
||
/>
|
||
</Form.Item>
|
||
</Form>
|
||
</div>
|
||
</>
|
||
} |