正直に言うと、fetch
および useState
と組み合わせた useEffect
API についてはおそらくよくご存じでしょう。機能しますが、すぐに扱いにくくなります。エラー処理? 雑用です。キャッシング?悪夢だ。 データの更新を管理しますか?忘れてください!
しかし、データの取得がもっと簡単にできたらどうでしょうか? Axios と React-TanStack-Query を導入すると、データ管理がやりくり行為からスムーズで効率的なプロセスに変わります。
映画リスト アプリを考えてみましょう。これらのツールを使用すると、コードを繰り返す代わりに、機能の構築に集中できます。アップグレードの準備はできていますか?始めましょう!
なぜ fetch
useState
useEffect
を無視するのでしょうか?
ソリューションに入る前に、従来のアプローチの限界を確認してみましょう。
- 冗長性: 各データのフェッチには、状態のロード、エラー処理、およびフェッチ呼び出し自体のための反復コードが含まれます。
-
キャッシュの非効率性:
fetch
は本質的にデータをキャッシュしません。ページに戻るということは、すべてを再取得することを意味します。 - 手動再フェッチ: データ更新には、リロードをトリガーするために手動介入が必要です。
これらの問題に対処しましょう。
ステップ 1: Axios と React-TanStack-Query のインストール
これらのパッケージをプロジェクトに追加します:
npm install axios @tanstack/react-query
次に、データ管理用のヘルパーである クエリ クライアント を構成します。
// /components/providers/QueryProvider.jsx "use client" import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; const queryClient = new QueryClient(); export default function QueryProvider({ children }) { return ( <QueryClientProvider client={queryClient}> {children} </QueryClientProvider> ); }
// /layout.jsx import localFont from "next/font/local"; import "./globals.css"; import QueryProvider from "../components/providers/QueryProvider"; const geistSans = localFont({ src: "./fonts/GeistVF.woff", variable: "--font-geist-sans", weight: "100 900", }); const geistMono = localFont({ src: "./fonts/GeistMonoVF.woff", variable: "--font-geist-mono", weight: "100 900", }); export const metadata = { title: "Tanstack Query with axios", description: "Generated by create next app", }; export default function RootLayout({ children }) { return ( <QueryProvider>{children}</QueryProvider> ); }
これがセットアップです。データを取得しましょう!
React-TanStack-Query を使用したデータの取得
React-TanStack-Query を使用して、単純なフェッチの例をリファクタリングしてみましょう。 映画リストを取得する映画アプリを構築します:
従来のアプローチ (fetch
useState
useEffect
)
import { useEffect, useState } from "react"; export default function Movies() { const [movies, setMovies] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetch("https://api.example.com/movies") .then(res => res.json()) .then(data => { setMovies(data); setLoading(false); }) .catch(err => { setError(err); setLoading(false); }); }, []); if (loading) return <p>Loading movies...</p>; if (error) return <p>Error loading movies: {error.message}</p>; return ( <ul> {movies.map(movie => ( <li key={movie.id}>{movie.title}</li> ))} </ul> ); }
それでは、React-TanStack-Query を使用してこれを効率化しましょう。
改良されたアプローチ (React-TanStack-Query)
import { useQuery } from "@tanstack/react-query"; import axios from "axios"; const fetchMovies = async () => { const response = await axios.get("https://api.example.com/movies"); return response.data; }; export default function Movies() { const { data: movies, error, isLoading } = useQuery(["movies"], fetchMovies); if (isLoading) return <p>Loading movies...</p>; if (error) return <p>Error loading movies: {error.message}</p>; return ( <ul> {movies.map(movie => ( <li key={movie.id}>{movie.title}</li> ))} </ul> ); }
説明
-
useQuery
: このフックはフェッチ、キャッシュ、およびエラー管理を処理します。useState
やuseEffect
を手動で行う必要はもうありません! - 自動再取得: データは手動介入なしで最新のままです。
-
Axios 統合: Axios は、ネイティブ
fetch
API と比較してデータの取得を簡素化します。
Axios のカスタマイズ
実際のアプリでは、多くの場合、ヘッダー、ベース URL、または認証トークンが必要です。 再利用可能な Axios インスタンスを作成します:
// utils/axios.js import axios from "axios"; const axiosInstance = axios.create({ baseURL: "https://api.example.com", headers: { Authorization: `Bearer ${process.env.API_TOKEN}`, }, }); export default axiosInstance;
クエリでこのインスタンスを使用します:
import { useQuery } from "@tanstack/react-query"; import axiosInstance from "../utils/axios"; const fetchMovies = async () => { const response = await axiosInstance.get("/movies"); return response.data; }; // ... rest of the Movies component remains the same
React-TanStack-Query の利点
これが価値のあるアップグレードである理由は次のとおりです:
- 組み込みキャッシュ: データはキャッシュされ、不必要な再フェッチを回避します。
-
簡略化されたエラー処理: 複雑な
try/catch
ブロックは不要です。 - Stale-while-Revalidate: バックグラウンドで更新を取得している間にキャッシュされたデータを表示します。
- 広範なカスタマイズ: フェッチ、ポーリング、再試行などを簡単に調整できます。
ボーナス: ページネーションの例
ページ分割された API の処理は簡単です:
npm install axios @tanstack/react-query
結論
React-TanStack-Query の採用は、高性能システムにアップグレードするようなものです。 キャッシュ、エラー処理、再フェッチを処理するため、優れた機能の構築に集中できます。 コードの繰り返しに飽きたら、ぜひ試してみてください。後悔はしません!
以上がAxios と React-TanStack-Query を使用して Next.js でデータをフェッチするための完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
