成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

效率寶典:7個超棒的React Hooks

開發 前端
在React hooks發行前,React軟件的功能性組件使用比較有限,在處理狀態、上下文API以及一些生命周期方法時往往無計可施。本文就將帶大家學習如何使用不同的React hooks來解決日常所遇到的問題。

 本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

在React hooks發行前,React軟件的功能性組件使用比較有限,在處理狀態、上下文API以及一些生命周期方法時往往無計可施。但從React 16.8版本開始,用戶則能更加靈活地使用一些已經存在的代碼。

本文就將帶大家學習如何使用不同的React hooks來解決日常所遇到的問題。

[[336826]]

useFilerHook

Christopher Patty集合了一組很酷的hook函數,該集合被稱為“crook.”。我個人很喜歡useFiler Hook,因為它能在Web瀏覽器中創建虛擬文件系統,而且基本上該函數是利用瀏覽器的本地存儲來管理文檔和文檔內容。

首先,在應用程序中安裝“crooks”安裝包:

  1. npm install crooks --save 

現在,引入 crooks中的useFiler Hook:

  1. import { useFiler } from 'crooks' 

至此,已經準備好初始化hook并管理虛擬文件系統了。這里用一個簡單的代碼片段舉例子:

  1. constApp= () => { 
  2.        const [files, {add,remove, update, clear}] =useFiler("localStorageItem") 
  3.        return ( 
  4.          <div>My Project</div> 
  5.        ) 
  6.      } 

如上述代碼所示,可以使用add(), remove(), update()以及clear() 方法。接下我們來學習如何使用它們。

(1) 添加文件

add() 函數接受一個必需的參數。我們需要傳遞JavaScript Object Notation(簡稱JSON)可序列化的數據:

  1. update("abc1234", "New content of file.") 

注意,這個函數將會自動為每一個新文件生成一個ID,但是用戶仍然可以通過傳遞一個整數或者一串字符串作為第二個參數來設置一個自定義ID。

(2) 更新文件

update() 方法接受兩個自變量。第一個是文件的ID,而另一個自變量則用于傳遞新數據:

  1. update("abc1234", "New content of file.") 

(3) 移除文件

使用 remove() 方法傳遞文件ID以刪除它:

  1. remove("abc1234") 

(4) 清除所有文件

調用clear() 方法移除所有文件:

  1. clear() 

2. useFetch Hooks

[[336827]]

圖源:unsplash

Steven Persia(一位MERNStack的開發人員)編寫了很多React hooks,并將其命名為“Captain hook.”,它們在處理日常任務時非常有用。接下來幾個hook的例子都取自他的集合。

useFetch能夠從應用程序接口(API)提取數據。請求完成后,它將返回響應及錯誤。將useFetch引入項目:

  1. import useFetch from "hooks/useFetch"; 

發出請求:

  1. const { response, errors } = useFetch("https://api.github.com/users/torvalds/repos"); 

3. useHover Hook

useHover Hook也屬于“Captain hook”合集。通常來說,該函數會跟蹤屏幕上的鼠標光標來檢測其是否處在特殊的元素上方。如果是,它將會觸發懸停事件。

引入useHover Hook:

  1. import useHover from "hooks/useHover"; 

將其初始化:

  1. const [hoverMe, isHovered] = useHover(); 

此處,hoverMe 表示特定的超文本標記語言元素,而isHovered則包含可以在條件語句中檢查的布爾值。例如,可以這樣使用:

  1. <div ref={hoverMe}>{isHovered ? "Hovered!" : "Hoverme!"}</div> 

4. useSlugHook

Slug是每個Web項目中必不可少的部分。事實上,它也可以提升一個網站的搜索引擎優化(Search Engine Optimization,簡稱SEO)。

這也是Steven將useSlug 加入他“Captain hook”合集的原因。使用useSlug可以快速將任何字符串轉化為為對SEO友好的slug。它十分智能,能夠將任何變音符號(重音符號)用它的標準對等音表示。例如,它能夠將 é 或 è 轉化為e表示。

與往常一樣,首先需要引入這個hook:

  1. import useSlug from "hooks/useSlug"; 

用法:

在初始化該hook的同時,需要傳遞任意字符串(例如一個文章的名稱)作為第一個參數。結果就是它將返回一個格式正確的slug,該slug能夠立刻應用到項目中。

  1. useSlug("React Hooks! résoudre les problèmes quotidiens");//react-hooks-resoudre-les-problemes-quotidiens 

5. useDrag和useDropHooks

有一個名為“ahooks”的開源React Hooks庫,它是由電子商務巨頭阿里巴巴和一些志愿者共同積極開發的。在撰寫本文時,該庫共有約46個hook,它們中的每個函數都聚焦于解決某一特定的問題。

這里將介紹一對hooks:useDrag 和 useDrop。你可能已經對它們的功能有所了解,但我一定要談談它們對我們實現HTML5的拖放功能的幫助。

先來安裝:

  1. npm install ahooks --save 

引入這個hook:

  1. import { useDrag, useDrop } from 'ahooks'; 

用法:

首先,初始化useDrag 和useDrop Hook。useDrag 返回傳遞給文檔對象模型(Document Object Model,簡稱DOM)元素的Prop。useDrop 返回傳遞給放置區域的Prop。它還能通過布爾屬性(isHovering)來通知拖動元素是否放在了放置區域的頂部。

最后,useDrop 有四個回調函數,它們依據放置項的類型來執行:

  • onText
  • onFiles
  • onUri
  • onDom
  1. const getDragProps =useDrag(); 
  2.             const [props, {isHovering }] =useDrop({ 
  3.              onText: (text, e) => { 
  4.                alert(`'text: ${text}' dropped`); 
  5.              }, 
  6.              onFiles: (files, e) => { 
  7.                alert(`${files.length} file dropped`); 
  8.              }, 
  9.              onUri: (uri, e) => { 
  10.                alert(`uri: ${uri} dropped`); 
  11.              }, 
  12.              onDom: (content: string, e) => { 
  13.                alert(`custom: ${content} dropped`); 
  14.              } 
  15.             }); 

可以使用鼠標拖動的HTML5元素:

  1. <div {...getDragProps(id)}>Draggable Element</div> 

這是一個HTML5元素,可以在其中放置一些東西:

  1. <div {...props}> 
  2.   {isHovering ? 'Release Item Here' :'Drop Anything Here'} 
  3. </div> 

6. useDarkMode Hook

Craig Walker原創的“React Recipes”是一個很受歡迎的自定義React hooks集合,該集合中的 useDarkMode Hook能夠實現網站主題在明暗模式之間的切換。切換模式后,它將當前值儲存在localStorage中。這意味無論在哪里打開瀏覽器,用戶偏好的模式將會被應用于所有瀏覽器。

安裝庫:

  1. npm install react-recipes --save 

引用:

  1. import { useDarkMode } from "react-recipes"; 

舉個例子,一般來說,useDarkMode() 返回結果有兩類:

  • darkMode: 當開啟黑暗模式,布爾值為真。
  • setDarkMode:在明暗模式之間切換。
  1. functionApp() { 
  2.           const [darkMode, setDarkMode]=useDarkMode(); 
  3.           return ( 
  4.            <divclassNamedivclassName="header"> 
  5.              <ToggledarkModeToggledarkMode={darkMode} setDarkMode={setDarkMode} /> 
  6.            </div> 
  7.           ); 
  8.         } 

本文我們學習了在日常工作中應用React Hooks。上述例子僅僅只是滄海一粟,還有無數的開源hook供你應用于自己的項目中。開源的意義正在于此,React Hooks最主要的好處就是編寫更多更好且更實用的代碼。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2022-06-23 09:04:14

ReactHooks項目

2011-03-31 08:47:29

jQuery

2011-03-31 10:45:18

JavaScript

2019-08-20 15:16:26

Reacthooks前端

2023-11-06 08:00:00

ReactJavaScript開發

2011-03-18 11:09:42

jQuery

2015-06-04 12:27:00

Visual Stud

2011-05-18 16:09:10

404錯誤頁面

2021-03-09 09:52:55

技術React Hooks'數據

2020-10-28 09:12:48

React架構Hooks

2013-05-24 08:46:22

編程字體

2021-03-18 08:00:55

組件Hooks React

2015-06-26 09:55:42

iOS學習

2019-10-14 10:56:44

GitHub開源管理面板

2022-03-31 17:54:29

ReactHooks前端

2020-09-19 17:46:20

React Hooks開發函數

2011-03-11 09:58:02

jQuery

2022-08-21 09:41:42

ReactVue3前端

2024-01-26 09:01:30

HooksReact 19版本

2019-03-13 10:10:26

React組件前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av黄色在线观看 | 自拍在线 | 亚洲 自拍 另类 欧美 丝袜 | 一区二区高清不卡 | 国内自拍偷拍一区 | 欧美日产国产成人免费图片 | 国产成人综合在线 | 国产精品爱久久久久久久 | 香蕉一区| 国产精品九九视频 | 欧美国产中文 | 自拍偷拍亚洲一区 | 国产亚洲一区二区三区 | 日韩三级一区 | 成人免费视频 | 久久久国产精品 | 亚洲日本中文 | 亚洲精品91 | 久久久免费 | 成人在线视频一区 | 亚洲高清视频在线 | 成人二区| www.日日操| 免费一级毛片 | 欧美a级成人淫片免费看 | 在线观看中文视频 | 久久久网 | 99热最新网址 | 精品国产乱码久久久久久闺蜜 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 国产免费观看一区 | 99精品视频免费观看 | 一区二区三区国产在线观看 | 日本久草视频 | 久久久免费少妇高潮毛片 | 91麻豆产精品久久久久久夏晴子 | 久久亚洲精品国产精品紫薇 | 激情福利视频 | 日韩精品一区在线 | 中文字幕二区三区 | 日韩男人天堂 |