国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
使用 React Query 簡化前端 CRUD 應用的數據獲取
首頁 web前端 js教程 REACT查詢3:獲取和管理數據的指南

REACT查詢3:獲取和管理數據的指南

Feb 10, 2025 pm 04:08 PM

使用 React Query 簡化前端 CRUD 應用的數據獲取

構建前端 CRUD 應用起初很容易,但隨著功能的增加,復雜性會迅速提升。對于每個 API 端點,都需要處理狀態(tài)管理、同步、緩存和錯誤處理。本文將介紹一個名為 React Query 的庫,以及它如何幫助解決所有這些問題。該庫自稱是“缺失的數據獲取庫”,為你的 React 應用提供“服務器狀態(tài)管理”。

我們將使用一個完整的 React Query 演示項目來學習該庫提供的核心功能。然后,你就可以將這些知識應用到自己的項目中。首先,在開始項目設置之前,讓我們先了解一些內容。

React Query 3: A Guide to Fetching and Managing Data

關鍵要點

  • React Query 3 簡化了 React 應用中的狀態(tài)管理和數據獲取,高效地處理緩存、同步和錯誤管理。
  • 該庫適用于熟悉 React、React Router 和 REST API 的中高級開發(fā)者。
  • React Query 3 在 2.x 版本的基礎上增加了新功能和改進,并為升級用戶提供了遷移指南。
  • 演示項目中演示的關鍵功能包括基本查詢、分頁查詢和無限查詢,以及創(chuàng)建、更新和刪除操作。
  • React Query 的 Devtools 實用程序通過實時可視化內部狀態(tài)和流程來輔助調試。
  • cacheTimestaleTime 等配置選項通過管理數據新鮮度和緩存持續(xù)時間來優(yōu)化性能。
  • 該庫支持無限滾動和復雜狀態(tài)依賴等高級場景,增強了用戶體驗和開發(fā)者體驗。

關于 React Query 3

React Query 是由 Tanner Linsey 創(chuàng)建的一個開源項目。最新的主要版本 React Query 3 于 2020 年 12 月正式發(fā)布。在這個新版本中,添加了新功能并改進了現有功能。

需要注意的是,與之前非常流行的 React Query 2.x 版本相比,它有一些重大更改。有一個遷移指南清楚地解釋了這些更改,因為你可能會遇到很多針對舊版本編寫的過時教程。

新版本提供了巨大的改進,許多之前報告的錯誤都已解決。3.x 版本雖然已準備好用于生產環(huán)境,但仍在不斷開發(fā)中,并定期修復新發(fā)現的錯誤。

前提條件

本文面向中高級前端開發(fā)者,他們已經掌握了以下方面的基本技能和知識:

  • React
  • React Router
  • React Hooks
  • REST API 數據獲取

在你的開發(fā)機器環(huán)境中,你需要設置以下內容:

  • Node.js
  • Git
  • REST 客戶端,例如 Postman、Insomnia 或 VS Code 的 REST 擴展

關于項目

我們將分析的演示項目是一個 React 前端應用程序,它將使用 React Query 獲取 REST JSON API 服務器提供的數據。該應用程序僅由五個頁面組成,展示了 React Query 提供的功能。這些功能包括:

  • 基本查詢
  • 分頁查詢
  • 無限查詢
  • 創(chuàng)建操作
  • 更新操作
  • 刪除操作

React Query 提供了更多功能,但本文篇幅有限,無法一一介紹。以下是我們將使用的應用程序的預覽:

React Query 3: A Guide to Fetching and Managing Data

項目設置

在我們開始設置之前,我認為最好先簡要了解一下項目中使用的其他依賴項。這些包括:

  • Vite:一個非常快速的構建工具
  • WindiCSS:一個非??焖俚?Tailwind CSS 編譯器
  • React Hook Form:一個使用 React hook 的表單構建器和驗證庫
  • React Modal:一個可訪問的模態(tài)組件
  • Axios:一個基于 Promise 的瀏覽器 HTTP 客戶端
  • JSON Server:一個完整的偽造 REST API 服務器

要在你自己的機器上設置 React Query 演示應用程序,請執(zhí)行以下說明:

# 克隆項目
git clone git@github.com:sitepoint-editors/react-query-demo.git

# 導航到項目目錄
cd react-query-demo

# 安裝包依賴項
npm install

# 為 json-server 設置數據庫文件
cp api/sample.db.json api/db.json

# 啟動 json-server
npm run json-server

json-server 使用的數據庫文件包含一個用戶數組。當你執(zhí)行 npm run json-server 時,一個偽造的 API 服務器將在端口 3004 上啟動。執(zhí)行 GET 請求將產生以下示例 JSON 響應:

[
  {
    "id": 1,
    "first_name": "Siffre",
    "last_name": "Timm",
    "email": "stimmes0@nasa.govz",
    "gender": "Male"
  },
  {
    "id": 2,
    "first_name": "Fonzie",
    "last_name": "Coggen",
    "email": "fcoggen1@weather.com",
    "gender": "Female"
  },
  {
    "id": 3,
    "first_name": "Shell",
    "last_name": "Kos",
    "email": "skos2@prweb.com",
    "gender": "Female"
  }
]

接下來,啟動將運行前端代碼的開發(fā)服務器:

# 在另一個終端中,啟動 React 開發(fā)服務器
npm run dev

轉到你的瀏覽器并打開 http://localhost:3000 以訪問應用程序。你應該會有與上面預覽中相同的體驗。請確保執(zhí)行以下任務,以便徹底探索應用程序的功能:

  • 查看基本查詢頁面(主頁)。
  • 訪問分頁頁面并與“上一頁”和“下一頁”按鈕進行交互。
  • 訪問無限頁面并與“加載更多”按鈕進行交互。
  • 返回基本查詢頁面并單擊“創(chuàng)建用戶”按鈕。你將被定向到“創(chuàng)建用戶”頁面。填寫表單并單擊“保存”按鈕。
  • 在用戶表中,找到“編輯”圖標。單擊它。這將帶你到“編輯用戶”頁面。進行任何你喜歡的更改,然后點擊“保存”按鈕。
  • 在用戶表中,找到“刪除”圖標。單擊它。這將啟動一個模態(tài)對話框,要求你確認刪除操作。單擊“刪除”按鈕以確認。

完成所有上述任務后,我們可以開始對項目進行分解。請查看項目結構,以便了解每個組件和視圖的位置。我將在本文中提供這些組件的簡化版本,以便你了解在項目中使用 React Query 的基礎知識。

安裝 React Query

可以使用以下命令在空白或現有 React 項目中安裝 React Query:

# 克隆項目
git clone git@github.com:sitepoint-editors/react-query-demo.git

# 導航到項目目錄
cd react-query-demo

# 安裝包依賴項
npm install

# 為 json-server 設置數據庫文件
cp api/sample.db.json api/db.json

# 啟動 json-server
npm run json-server

該包包含你所需的一切——包括 Devtools 實用程序功能,我們將在后面的部分中探討。安裝包后,你需要更新你的頂級組件——App.jsx——如下所示:

[
  {
    "id": 1,
    "first_name": "Siffre",
    "last_name": "Timm",
    "email": "stimmes0@nasa.govz",
    "gender": "Male"
  },
  {
    "id": 2,
    "first_name": "Fonzie",
    "last_name": "Coggen",
    "email": "fcoggen1@weather.com",
    "gender": "Female"
  },
  {
    "id": 3,
    "first_name": "Shell",
    "last_name": "Kos",
    "email": "skos2@prweb.com",
    "gender": "Female"
  }
]

QueryClientProvider 的任何子組件都將能夠訪問 React Query 庫提供的 hook。我們將在本文中使用的 hook 是:

  • useQuery
  • useInfiniteQuery
  • useMutation
  • useQueryClient

以下是一個更新后的(簡化版)App.jsx,其中包含我們將使用的子視圖:

# 在另一個終端中,啟動 React 開發(fā)服務器
npm run dev

(后續(xù)內容,請根據你的要求繼續(xù)翻譯剩余部分,包括UI組件、基本查詢、分頁查詢、無限查詢、Mutations等章節(jié)。)

以上是REACT查詢3:獲取和管理數據的指南的詳細內容。更多信息請關注PHP中文網其他相關文章!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用于不同的應用場景。Java用于大型企業(yè)和移動應用開發(fā),而JavaScript主要用于網頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

為什么要將標簽放在的底部? 為什么要將標簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript:探索用于高效編碼的數據類型 JavaScript:探索用于高效編碼的數據類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標元素,冒泡是從目標元素向上傳播到頂層。1.事件捕獲通過addEventListener的useCapture參數設為true實現;2.事件冒泡是默認行為,useCapture設為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動態(tài)內容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯誤處理。了解這兩個階段有助于精確控制JavaScript響應用戶操作的時機和方式。

Java和JavaScript有什么區(qū)別? Java和JavaScript有什么區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。1.Java是靜態(tài)類型、編譯型語言,適用于企業(yè)應用和大型系統(tǒng)。2.JavaScript是動態(tài)類型、解釋型語言,主要用于網頁交互和前端開發(fā)。

See all articles