React 쿼리 데이터베이스 플러그인: 데이터 페이지 매김 모범 사례

王林
풀어 주다: 2023-09-26 11:24:11
원래의
1523명이 탐색했습니다.

React Query 数据库插件:实现数据分页的最佳实践

React Query 데이터베이스 플러그인: 데이터 페이징 구현을 위한 모범 사례

Introduction

React Query는 React 애플리케이션에서 데이터 관리를 구현하는 데 사용되는 강력한 상태 관리 라이브러리입니다. 데이터 수집, 캐싱, 업데이트 및 동기화를 처리하는 간단하고 직관적인 방법을 제공하며 데이터 페이징 시나리오를 처리하는 데 매우 적합합니다. 이 글에서는 몇 가지 구체적인 코드 예제를 제공하면서 React Query를 사용하여 데이터 페이지를 매기는 모범 사례를 살펴보겠습니다.

React Query 소개

React Query는 React Hooks를 기반으로 데이터 수집 및 관리 솔루션을 제공합니다. 데이터 검색, 캐싱 및 업데이트를 쉽게 처리할 수 있으며 데이터 쿼리 및 필터링은 물론 데이터 동기화 및 오류 처리와 같은 처리 기능도 지원합니다. 또한 React Query는 데이터 일관성을 유지하면서 캐시 성능을 극대화하고 네트워크 요청을 줄이는 캐시 기반 메커니즘을 사용합니다.

데이터 페이징의 필요성

대부분의 애플리케이션에서 데이터는 일반적으로 페이지별로 로드되어야 합니다. 데이터의 양이 많은 경우 모든 데이터를 한꺼번에 로드하면 성능 문제가 발생할 수 있으며 네트워크 전송 비용이 증가할 수 있습니다. 따라서 페이지에 데이터를 로드하는 것은 사용자 경험과 전반적인 애플리케이션 성능을 향상시키는 일반적인 방법입니다.

React Query를 사용한 데이터 페이징 구현 모범 사례

다음은 React Query를 사용하여 데이터 페이징을 구현하는 몇 가지 모범 사례입니다.

1 React Query의 쿼리 기능 설정

먼저, 쿼리 기능을 설정해야 합니다. 반응 쿼리. 쿼리 기능에는 현재 페이지 번호(페이지)를 지정하고 페이지 번호를 기준으로 해당 데이터를 얻기 위한 매개변수가 포함되어야 합니다. 동시에 QueryKeys를 사용하여 각 요청에 대한 고유 키를 정의하여 데이터 캐싱 및 쿼리를 용이하게 할 수 있습니다.

const fetchUsers = async (page) => {
  const response = await fetch(`/api/users?page=${page}`);
  const data = await response.json();
  return data;
};

const queryKeys = (page) => ['users', { page }];
로그인 후 복사

2. useQuery를 사용하여 데이터 얻기

useQuery 후크 기능을 사용하여 쉽게 데이터를 얻고, React Query의 캐싱 메커니즘을 사용하여 성능을 최적화합니다. 쿼리 함수와 쿼리 키를 전달하기만 하면 됩니다.

const UsersList = () => {
  const { isLoading, isError, data } = useQuery(queryKeys(page), fetchUsers);
  
  if (isLoading) {
    return <div>Loading...</div>;
  }
  
  if (isError) {
    return <div>Error loading data</div>;
  }
  
  return (
    <ul>
      {data.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
};
로그인 후 복사

3. 페이징 로직 처리

페이징을 구현하려면 현재 페이지 번호를 추적하고 페이지 번호를 전환하기 위한 사용자 상호 작용을 제공해야 합니다. useState 후크를 사용하여 currentPage 상태를 정의하고 사용자 상호 작용에 따라 업데이트할 수 있습니다. 그런 다음 currentPage를 쿼리 함수의 매개변수로 사용하여 해당 페이지 번호의 데이터를 얻을 수 있습니다.

const UsersList = () => {
  const [currentPage, setCurrentPage] = useState(1);
  const { isLoading, isError, data } = useQuery(queryKeys(currentPage), fetchUsers);
  
  const handlePreviousPage = () => {
    setCurrentPage((prevPage) => prevPage - 1);
  };
  
  const handleNextPage = () => {
    setCurrentPage((prevPage) => prevPage + 1);
  };
  
  if (isLoading) {
    return <div>Loading...</div>;
  }
  
  if (isError) {
    return <div>Error loading data</div>;
  }
  
  return (
    <div>
      <button onClick={handlePreviousPage} disabled={currentPage === 1}>
        Previous Page
      </button>
      <button onClick={handleNextPage}>
        Next Page
      </button>
      
      <ul>
        {data.map((user) => (
          <li key={user.id}>{user.name}</li>
        ))}
      </ul>
    </div>
  );
};
로그인 후 복사

4. 캐싱 및 데이터 프리페칭 추가

React 쿼리는 캐시 기반 메커니즘을 사용하여 캐시 사용을 극대화하여 성능을 향상시킵니다. 따라서 페이지가 로드되면 데이터가 자동으로 캐시되고 다음 요청 시 캐시에서 가져옵니다. 또한 사용자가 페이지 번호를 전환할 때 데이터를 더 빠르게 로드할 수 있도록 useQueryPrefetch 후크를 사용하여 다음 페이지에 대한 데이터를 미리 준비할 수 있습니다.

const UsersList = () => {
  // ...

  const nextPageQuery = queryKeys(currentPage + 1);
  const prefetchNextPage = useQueryPrefetch(nextPageQuery, fetchUsers);

  const handleNextPage = () => {
    setCurrentPage((prevPage) => prevPage + 1);
    prefetchNextPage();
  };

  // ...
};
로그인 후 복사

위 단계를 통해 React Query를 사용하면 데이터 페이징을 쉽게 구현하고 성능을 최적화할 수 있습니다.

요약

이 글에서는 React Query를 사용하여 데이터 페이징을 구현하는 모범 사례를 소개하고 몇 가지 구체적인 코드 예제도 제공합니다. React Query는 편리한 후크 기능과 캐싱 메커니즘을 제공하여 데이터 페이징 구현을 간단하고 효율적으로 만듭니다. React Query를 사용하면 데이터 검색, 캐싱 및 업데이트를 더 잘 처리하는 동시에 우수한 사용자 경험과 애플리케이션 성능을 제공할 수 있습니다.

이 글이 React Query를 이해하고 사용하여 데이터 페이징을 처리하는 데 귀중한 지침과 도움이 되기를 바랍니다.

위 내용은 React 쿼리 데이터베이스 플러그인: 데이터 페이지 매김 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!