麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 反應:創建使用取型自定義鉤子

反應:創建使用取型自定義鉤子

來源:千鋒教育
發布人:syq
時間: 2022-09-14 18:13:33 1663150413

  有關在 React 中創建自定義鉤子以跨所有組件使用 Fetch 的教程。

  從版本 16.8 開始,React 鉤子被正式添加到 React.js。除了內置的 Hooks 之外,我們還可以定義自己的 hook 來使用狀態和其他 React 特性,而無需編寫類。

創建使用取型自定義鉤子

  當您的組件邏輯需要由多個組件使用時,我們可以將該邏輯提取到自定義掛鉤中。例如,如果您需要從不同組件中的服務器獲取數據,則必須在每個組件中編寫 fetch 函數,然后添加用于處理加載和錯誤狀態的狀態。我們不必在每個組件中放置 fetch,而是可以創建自定義鉤子并在任何地方重用它。

  自定義鉤子以“use”前綴開頭。例如。useFetch

  步驟1

  讓我們創建一個新文件:useFetch.js

4

  在導入我們的鉤子并像任何其他鉤子一樣使用它。這是我們傳入URL以從中獲取數據的地方。現在我們可以在任何組件中重用這個自定義 Hook,從任何 URL 獲取數據。app.jsuseFetch

5

  步驟2:添加加載/錯誤狀態

  我們還可以添加附加參數和參數來指示數據是否正在獲取以及是否發生錯誤。loading error

6

  用法:

7

  步驟3:抓取“有什么”問題“?

  讓我們再看一遍這個代碼塊:

8

  一切似乎都很好,什么可能出錯?您幾乎可以在所有文章和視頻教程中找到此代碼塊。但我想在這里強調2點。如果:

  首先:服務器返回無效的 JSON 字符串

  接口 的方法 獲取 流并讀取它直到完成。它返回一個承諾,該承諾通過解析正文文本作為 的結果進行解析。json() Response Response JSON

  在第(1)行上,我們使用json()函數解析響應,但是如果服務器返回字符串而不是JSON字符串,則此塊將引發錯誤。假設我們的服務器在響應中只返回“OK”文本。

  res.status(200).send('OK')

  在這種情況下,我們將獲得成功狀態,但我們的抓取將引發錯誤:

9

  無效的 JSON 字符串

  第二:捕獲服務器錯誤

  如果服務器返回4xx或5xx狀態(例如404,500),我們仍將轉到阻止而不是阻止。因為這就是提取請求的工作方式。thencatch

  僅當發生網絡錯誤時,獲取承諾才會使用類型錯誤拒絕。由于 4xx 和 5xx 響應不是網絡錯誤,因此沒有什么可捕獲的。

  解決這些錯誤

  對于第一點,我們可以添加一個 try/catch 塊(用于和用于處理 Promise 中的錯誤的塊),如果發生錯誤,我們可以從響應中返回文本值。async/awaitcatch

10

  注意:我們在這里使用是因為我們可以使用或只能使用一次。否則,它將引發錯誤:clone json text

11

  對于第二點(處理服務器錯誤),我們需要檢查響應狀態(可以是或)。res.oktrue false

  法典

12

  最后的步驟

  將我們的承諾鏈替換為異步/等待

  添加類型腳本

  添加重新獲取選項

  有條件地獲取(不僅在組件裝載上)

  再次調用自定義掛鉤的唯一方法是在掛鉤中添加依賴項,并將其從組件中更改。useEffect

13

  例:假設每次單擊按鈕時都需要獲取數據。在按鈕單擊時,我們可以更改切換值,該值在useFetch鉤子中用作依賴項,數據將再次被提取。

14

  現在一切似乎都很好,但是如果我們需要通過單擊按鈕而不是在組件安裝時加載數據來加載數據,該怎么辦?如果我們嘗試添加如下條件,它將引發錯誤。這是因為鉤子不能在條件下使用。此代碼錯誤 ↓

15

  我們將收到此錯誤:

  Rendered more hooks than during the previous render.

  為了解決這個問題,我們可以將條件放在自定義鉤子中,而不是將其放在組件中。如果 提供了,值為 — 無需加載數據。refetchnull

17

  例子

  服務器返回一個字符串而不是 JSON。堆棧閃電戰演示

18

  通過單擊按鈕重新獲取數據。堆棧閃電戰演示

19

  在按鈕單擊而不是組件安裝時發出獲取請求。在這里,我們需要設置這將阻止在組件安裝時發送請求。param null

20

  發出發布/放置請求

21

  就是這樣。此外,我們還可以從自定義鉤子添加返回狀態代碼和錯誤消息。

  您可以在此處找到源代碼,并在此處找到堆棧閃電戰示例。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
主站蜘蛛池模板: 蜜桃成熟时仙子| 蜜桃成熟时1997在线看免费看| 香蕉在线观看| 女人扒下裤让男人桶到爽| 免费看美女吃男生私人部位| 花季传媒下载免费安装app| 亲密爱人之无限诱惑| 两个人看的www视频免费完整版| 夜里18款禁用的视频软件| 欧美巨大xxxx做受高清| 欧美日韩大片在线观看| 黑人系列合集h| 欧美成人在线视频| 国产60部真实乱| 狠色狠色狠狠色综合久久| 欧美三级黄| 丁香六月婷婷精品免费观看| 亚欧洲乱码专区视频| 日韩精品武藤兰视频在线| 精品大臿蕉视频在线观看| 国产欧美精品区一区二区三区| 午夜国产在线视频| 又色又爽又黄的视频网站| 欧美激情第1页| 国产小鲜肉男同志gay| 80yy私人午夜a级国产| 久久精品国产一区二区三区| 国产激情电影综合在线看| 人人爽天天碰天天躁夜夜躁| 深夜a级毛片| 日本护士在线视频xxxx免费| 韩国三级大全久久电影| 风流小姨子| 大学生情侣酒店疯狂做| 2021日韩麻豆| 亚洲福利精品一区二区三区| 妖精的尾巴国语版全集在线观看| 国产无遮挡又黄又爽高清视| 喝乖女的奶水h1v| 亚洲春色第一页| 蜜桃成熟时无删减手机在线观看|