dify/web/app/education-apply/components/hooks.ts
2025-03-18 15:10:33 +08:00

45 lines
1.1 KiB
TypeScript

import {
useCallback,
useState,
} from 'react'
import { useDebounceFn } from 'ahooks'
import type { SearchParams } from './types'
import { useEducationAutocomplete } from '@/service/use-education'
export const useEducation = () => {
const {
mutateAsync,
isPending,
data,
} = useEducationAutocomplete()
const [prevSchools, setPrevSchools] = useState<string[]>([])
const handleUpdateSchools = useCallback((searchParams: SearchParams) => {
if (searchParams.keywords) {
mutateAsync(searchParams).then((res) => {
const currentPage = searchParams.page || 0
const resSchools = res.data
if (currentPage > 0)
setPrevSchools(prevSchools => [...(prevSchools || []), ...resSchools])
else
setPrevSchools(resSchools)
})
}
}, [mutateAsync])
const { run: querySchoolsWithDebounced } = useDebounceFn((searchParams: SearchParams) => {
handleUpdateSchools(searchParams)
}, {
wait: 300,
})
return {
schools: prevSchools,
setSchools: setPrevSchools,
querySchoolsWithDebounced,
handleUpdateSchools,
isLoading: isPending,
hasNext: data?.has_next,
}
}