import { nextTick, onMounted, ref, watch, type Ref } from "vue"; import { useRoute } from "vue-router"; export function useLoadQuerys>( defaults: T, afterLoad?: (querys: T) => void ) { const querys = ref(defaults) as Ref; const route = useRoute(); function loadQuerys() { const _querys = route.query; if (_querys) { for (const key in querys.value) { if (typeof defaults[key] === 'number') (querys.value as Record)[key] = Number(_querys[key]); else querys.value[key] = _querys[key] as any; } } afterLoad?.(querys.value); } watch(route, () => { loadQuerys(); }); onMounted(() => { nextTick(() => { loadQuerys(); }); }); return { querys, } }