Skip to Content
문서@suspensive/react-query<SuspenseInfiniteQuery/>

SuspenseInfiniteQuery

<SuspenseQuery/>가 useSuspenseQuery를 jsx에서 쉽게 사용하게 하는 역할과 마찬가지로 <SuspenseInfiniteQuery/>는 useSuspenseInfiniteQuery를 jsx에서 사용하기 쉽게 하기 위한 역할을 합니다.

import { SuspenseInfiniteQuery } from '@suspensive/react-query' import { Suspense, ErrorBoundary } from '@suspensive/react' import { PostListItem } from '~/components' const InfinitePostsPage = ({ userId }) => ( <ErrorBoundary fallback={({ error }) => <>{error.message}</>}> <Suspense fallback="loading..."> <SuspenseInfiniteQuery {...postsInfiniteQueryOptions(userId)}> {({ data, fetchNextPage }) => ( <> {data.pages.map((post) => ( <PostListItem {...post} /> ))} <button type="button" onClick={() => { fetchNextPage() }} > Load More </button> </> )} </SuspenseInfiniteQuery> </Suspense> </ErrorBoundary> )
import React from 'react'
import { SuspenseInfiniteQuery } from '@suspensive/react-query'
import { Suspense, ErrorBoundary } from '@suspensive/react'
import { PostListItem } from './PostListItem'
import { postsInfiniteQueryOptions } from './queries'

export const Example = () => {
  return (
    <ErrorBoundary fallback={({ error }) => <>{error.message}</>}>
      <Suspense fallback={<div>Loading...</div>}>
        <div
          style={{
            display: 'flex',
            flexDirection: 'column',
            marginBottom: '50px',
          }}
        >
          <SuspenseInfiniteQuery
            {...postsInfiniteQueryOptions()}
            getNextPageParam={(lastPage, allPages) => {
              return lastPage.skip + lastPage.limit < lastPage.total
                ? allPages.length + 1
                : undefined
            }}
          >
            {({
              data: { pages },
              fetchNextPage,
              hasNextPage,
              isFetchingNextPage,
              isFetched,
            }) => (
              <>
                <ol>
                  {pages.map((page) =>
                    page.data.map((post) => (
                      <PostListItem key={post.id} {...post} />
                    ))
                  )}
                </ol>
                <button
                  onClick={() => fetchNextPage()}
                  disabled={!hasNextPage || isFetchingNextPage}
                >
                  {isFetchingNextPage
                    ? 'Loading more...'
                    : hasNextPage
                      ? 'Load More'
                      : 'Nothing more to load'}
                </button>
              </>
            )}
          </SuspenseInfiniteQuery>
        </div>
      </Suspense>
    </ErrorBoundary>
  )
}

버전 기록

VersionChanges
v3.0.0networkMode'always'로 고정되었습니다. 자세한 내용은 v3로 마이그레이션하기 문서를 참고하세요.
수정된 날짜: