fix: keep pagination lock effect-local
This commit is contained in:
@@ -6,9 +6,7 @@ import { PostCard } from './post-card'
|
|||||||
export function PostFeed({ request }: { request: FeedRequest | undefined }) {
|
export function PostFeed({ request }: { request: FeedRequest | undefined }) {
|
||||||
const query = usePostFeed(request)
|
const query = usePostFeed(request)
|
||||||
const sentinel = useRef<HTMLDivElement>(null)
|
const sentinel = useRef<HTMLDivElement>(null)
|
||||||
const fetchingNextPage = useRef(query.isFetchingNextPage)
|
|
||||||
const posts = query.data ? flattenPostPages(query.data.pages) : []
|
const posts = query.data ? flattenPostPages(query.data.pages) : []
|
||||||
fetchingNextPage.current = query.isFetchingNextPage
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (
|
if (
|
||||||
@@ -20,10 +18,11 @@ export function PostFeed({ request }: { request: FeedRequest | undefined }) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let requested = false
|
||||||
const observer = new IntersectionObserver(
|
const observer = new IntersectionObserver(
|
||||||
([entry]) => {
|
([entry]) => {
|
||||||
if (entry?.isIntersecting && !fetchingNextPage.current) {
|
if (entry?.isIntersecting && !requested) {
|
||||||
fetchingNextPage.current = true
|
requested = true
|
||||||
void query.fetchNextPage()
|
void query.fetchNextPage()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user