|
|
- import { ref, reactive } from 'vue'
- import { onShow, onReachBottom } from '@dcloudio/uni-app'
-
- export const usePageList = (apiFun, defaultQueryParams) => {
-
- const queryParams = reactive({
- pageNo: 1,
- pageSize: 10,
- ...defaultQueryParams
- })
-
- const list = ref([])
- const total = ref(0)
-
- const fetchData = async () => {
- try {
- const res = await apiFun(queryParams)
-
- if (res.code === 200) {
- return res.data
- }
-
- return { list: [], total: 0 }
- } catch (err) {
- return { list: [], total: 0 }
- }
- }
-
- const getData = async () => {
- queryParams.pageNo = 1
- const { list: _list, total: _total } = await fetchData()
-
- list.value = _list
- total.value = _total
- }
-
- const getMore = async () => {
- if (list.value.length >= total.value) {
- return
- }
-
- queryParams.pageNo++
- const { list: _list } = await fetchData()
-
- list.value = list.value.concat(_list)
- }
-
- onShow(() => {
- console.log('--onShow')
-
- getData()
- })
-
- onReachBottom(() => {
- console.log('--onReachBottom')
-
- getMore()
- })
-
- return {
- queryParams,
- list,
- total,
- getData,
- getMore,
- }
-
- }
|