refactor: version 2.0 (React)

This commit is contained in:
qier222 2022-03-13 14:40:38 +08:00
parent 7dad7d810a
commit 950f72d4e8
No known key found for this signature in database
GPG key ID: 9C85007ED905F14D
356 changed files with 7901 additions and 29547 deletions

View file

@ -0,0 +1,32 @@
import { TrackApiNames, fetchTracks } from '@/api/track'
import type { FetchTracksParams } from '@/api/track'
// 100 tracks each page
const offset = 100
export default function useTracksInfinite(params: FetchTracksParams) {
return useInfiniteQuery(
[TrackApiNames.FETCH_TRACKS, params],
({ pageParam = 0 }) => {
const cursorStart = pageParam * offset
const cursorEnd = cursorStart + offset
const ids = params.ids.slice(cursorStart, cursorEnd)
return fetchTracks({ ids })
},
{
enabled: params.ids.length !== 0,
refetchOnMount: false,
refetchOnWindowFocus: false,
refetchOnReconnect: false,
refetchInterval: 0,
staleTime: Infinity,
getNextPageParam: (lastPage, pages) => {
// 当 return undefined 时hasNextPage会等于false
// 当 return 非 undefined 时return 的数据会传入上面的fetchTracks函数中
return pages.length * offset < params.ids.length // 判断是否还有下一页
? pages.length
: undefined
},
}
)
}