ホームページ >ウェブフロントエンド >jsチュートリアル >useEffect から React Query まで: React でのデータ管理の最新化
現代の Web 開発環境では、サーバー側のデータを効率的に管理する、高速で応答性の高いアプリケーションを構築することがこれまで以上に重要になっています。 React でデータをフェッチする従来の方法、特に useEffect を使用すると、多くの場合、複雑な状態管理、コードの繰り返し、パフォーマンスの問題が発生する可能性があります。 React Query を使用すると、開発者は定型コードを最小限に抑えながら、自動キャッシュ、バックグラウンド取得、組み込みのミューテーション サポートなどの機能を利用できます。
この記事では、React Query の核となる概念を探り、React Query をプロジェクトに統合する方法を示し、開発ワークフローを大幅に改善できる強力な機能に焦点を当てます。 React アプリケーションでデータをフェッチ、キャッシュ、同期する方法を変革する準備をしましょう!
データの取得に React の useEffect を使用することは完全に有効ですが、React Query のような専用のデータ取得ライブラリを優先して、React の useEffect を使用しないことを検討する理由がいくつかあります (React のドキュメントでも、データの取得に React Query を使用することを推奨しています)。
React Query は、React アプリケーションでのデータの取得と状態管理を簡素化するように設計された強力なライブラリです。 React Query の仕組みを詳しく説明します:
React Query は、いくつかのシナリオでデータを自動的に再フェッチして、データを最新の状態に保ち、同期を保ちます。これが発生する主な状況は次のとおりです:
ここでは、React Query を使用して React アプリでサーバー データの取得、キャッシュ、更新、同期を管理する方法についてのステップバイステップ ガイドを示します。
まず、React Query をプロジェクトに追加します。
npm install @tanstack/react-query
React Query を構成するには、アプリを QueryClientProvider でラップします。このプロバイダーは、キャッシュ、バックグラウンド取得、更新を管理する QueryClient インスタンスを使用します。
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; const queryClient = new QueryClient(); function App() { return ( <QueryClientProvider client={queryClient}> <YourComponent /> </QueryClientProvider> ); }
useQuery フックは API からデータを取得し、それを自動的にキャッシュし、読み込みやエラーなどの状態を処理します。
npm install @tanstack/react-query
useMutation フックは、データの作成、更新、または削除に使用されます。ミューテーションが成功すると、クエリの無効化を使用して関連データを再取得し、アプリの状態を最新の状態に保つことができます。
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; const queryClient = new QueryClient(); function App() { return ( <QueryClientProvider client={queryClient}> <YourComponent /> </QueryClientProvider> ); }
React Query DevTools は、開発中にクエリやキャッシュ ステータスなどを監視するのに役立ちます:
import { useQuery } from '@tanstack/react-query'; function YourComponent() { const { data, error, isLoading } = useQuery(['todos'], fetchTodos); if (isLoading) return <p>Loading...</p>; if (error) return <p>Error: {error.message}</p>; return ( <div> {data.map((todo) => ( <p key={todo.id}>{todo.title}</p> ))} </div> ); } // Sample fetch function const fetchTodos = async () => { const response = await fetch('/api/todos'); return response.json(); };
次に、
import { useMutation, useQueryClient } from '@tanstack/react-query'; function TodoAdder() { const queryClient = useQueryClient(); const addTodoMutation = useMutation(addTodo, { onSuccess: () => { queryClient.invalidateQueries(['todos']); }, }); return ( <button onClick={() => addTodoMutation.mutate({ title: 'New Todo' })}> Add Todo </button> ); } const addTodo = async (newTodo) => { const response = await fetch('/api/todos', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(newTodo), }); return response.json(); };
データの取得と副作用のために useEffect を React Query に置き換えることは、最新の React アプリケーションを構築する場合に非常に推奨されます。
React Query は、React アプリでのサーバー側データの処理方法を変革し、複雑な状態管理を簡素化する、より宣言的なアプローチを提供します。キャッシュ、バックグラウンド同期、クエリの無効化などの強力な機能を活用することで、応答性が高くパフォーマンスの高いアプリケーションを作成できます。そして最後に重要なことですが、React Query DevTools を統合すると、監視とデバッグが容易になり、アプリのデータ フローがスムーズかつ透過的になります。
シンプルなシングルページ アプリを構築している場合でも、複雑なデータ量の多いアプリケーションを構築している場合でも、React Query を使用すると、より少ない労力で、より高速でスマート、よりユーザー フレンドリーなアプリを構築できます。
以上がuseEffect から React Query まで: React でのデータ管理の最新化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。