minhnt-dev: make UI

This commit is contained in:
MoreStrive
2024-05-30 21:32:51 +07:00
parent 2aa5607c48
commit b52352660d
16 changed files with 315 additions and 169 deletions
+32
View File
@@ -0,0 +1,32 @@
const debounce = (fn: (...args: any[]) => void, delay = 0, immediate = false) => {
let timeout: string | number | NodeJS.Timeout
return (...args: any[]) => {
if (immediate && !timeout) fn(...args)
clearTimeout(timeout)
timeout = setTimeout(() => {
fn(...args)
}, delay)
}
}
const useDebouncedRef = (initialValue: any, delay?: number, immediate?: boolean) => {
const state = ref(initialValue)
const debouncedRef = customRef((track: () => void, trigger: () => void) => ({
get() {
track()
return state.value
},
set: debounce(
(value: any) => {
state.value = value
trigger()
},
delay,
immediate
),
}))
return debouncedRef
}
export default useDebouncedRef