ykt-team-wxapp/hooks/usePageList.js

34 lines
806 B
JavaScript
Raw Normal View History

2026-02-28 15:08:23 +08:00
import { computed, ref, watch } from "vue";
import useDebounce from '@/utils/useDebounce'
export default function usePageList(callback, options = {}) {
const keyword = ref('')
const list = ref([])
const page = ref(1)
const pageSize = ref(options.pageSize || 20)
const pages = ref(0);
const loading = ref(false)
const total = ref(0)
const hasMore = computed(() => page.value < pages.value)
const handleKeywordChange = useDebounce(() => {
getList()
}, options.debounce || 1000)
function changePage(p) {
if (loading.value) return
page.value = p
getList()
}
function getList() {
typeof callback === 'function' && callback()
}
watch(keyword, handleKeywordChange);
return { total, page, pageSize, keyword, list, pages, changePage, loading, hasMore }
}