您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么使用不同的React hooks來解決日常所遇到的問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用不同的React hooks來解決日常所遇到的問題”吧!
useFilerHook
Christopher Patty集合了一組很酷的hook函數,該集合被稱為“crook.”。我個人很喜歡useFiler Hook,因為它能在Web瀏覽器中創建虛擬文件系統,而且基本上該函數是利用瀏覽器的本地存儲來管理文檔和文檔內容。
首先,在應用程序中安裝“crooks”安裝包:
npm install crooks --save
現在,引入 crooks中的useFiler Hook:
import { useFiler } from 'crooks'
至此,已經準備好初始化hook并管理虛擬文件系統了。這里用一個簡單的代碼片段舉例子:
constApp= () => { const [files, {add,remove, update, clear}] =useFiler("localStorageItem") return ( <div>My Project</div> ) }
如上述代碼所示,可以使用add(), remove(), update()以及clear() 方法。接下我們來學習如何使用它們。
(1) 添加文件
add() 函數接受一個必需的參數。我們需要傳遞JavaScript Object Notation(簡稱JSON)可序列化的數據:
update("abc1234", "New content of file.")
注意,這個函數將會自動為每一個新文件生成一個ID,但是用戶仍然可以通過傳遞一個整數或者一串字符串作為第二個參數來設置一個自定義ID。
(2) 更新文件
update() 方法接受兩個自變量。第一個是文件的ID,而另一個自變量則用于傳遞新數據:
update("abc1234", "New content of file.")
(3) 移除文件
使用 remove() 方法傳遞文件ID以刪除它:
remove("abc1234")
(4) 清除所有文件
調用clear() 方法移除所有文件:
clear()
2. useFetch Hooks
圖源:unsplash
Steven Persia(一位MERNStack的開發人員)編寫了很多React hooks,并將其命名為“Captain hook.”,它們在處理日常任務時非常有用。接下來幾個hook的例子都取自他的集合。
useFetch能夠從應用程序接口(API)提取數據。請求完成后,它將返回響應及錯誤。將useFetch引入項目:
import useFetch from "hooks/useFetch";
發出請求:
const { response, errors } = useFetch("https://api.github.com/users/torvalds/repos");
3. useHover Hook
useHover Hook也屬于“Captain hook”合集。通常來說,該函數會跟蹤屏幕上的鼠標光標來檢測其是否處在特殊的元素上方。如果是,它將會觸發懸停事件。
引入useHover Hook:
import useHover from "hooks/useHover";
將其初始化:
const [hoverMe, isHovered] = useHover();
此處,hoverMe 表示特定的超文本標記語言元素,而isHovered則包含可以在條件語句中檢查的布爾值。例如,可以這樣使用:
<div ref={hoverMe}>{isHovered ? "Hovered!" : "Hoverme!"}</div>
4. useSlugHook
Slug是每個Web項目中必不可少的部分。事實上,它也可以提升一個網站的搜索引擎優化(Search Engine Optimization,簡稱SEO)。
這也是Steven將useSlug 加入他“Captain hook”合集的原因。使用useSlug可以快速將任何字符串轉化為為對SEO友好的slug。它十分智能,能夠將任何變音符號(重音符號)用它的標準對等音表示。例如,它能夠將 é 或 è 轉化為e表示。
與往常一樣,首先需要引入這個hook:
import useSlug from "hooks/useSlug";
用法:
在初始化該hook的同時,需要傳遞任意字符串(例如一個文章的名稱)作為第一個參數。結果就是它將返回一個格式正確的slug,該slug能夠立刻應用到項目中。
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的拖放功能的幫助。
先來安裝:
npm install ahooks --save
引入這個hook:
import { useDrag, useDrop } from 'ahooks';
用法:
首先,初始化useDrag 和useDrop Hook。useDrag 返回傳遞給文檔對象模型(Document Object Model,簡稱DOM)元素的Prop。useDrop 返回傳遞給放置區域的Prop。它還能通過布爾屬性(isHovering)來通知拖動元素是否放在了放置區域的頂部。
最后,useDrop 有四個回調函數,它們依據放置項的類型來執行:
onText
onFiles
onUri
onDom
const getDragProps =useDrag(); const [props, {isHovering }] =useDrop({ onText: (text, e) => { alert(`'text: ${text}' dropped`); }, onFiles: (files, e) => { alert(`${files.length} file dropped`); }, onUri: (uri, e) => { alert(`uri: ${uri} dropped`); }, onDom: (content: string, e) => { alert(`custom: ${content} dropped`); } });
可以使用鼠標拖動的HTML5元素:
<div {...getDragProps(id)}>Draggable Element</div>
這是一個HTML5元素,可以在其中放置一些東西:
<div {...props}> {isHovering ? 'Release Item Here' :'Drop Anything Here'} </div>
6. useDarkMode Hook
Craig Walker原創的“React Recipes”是一個很受歡迎的自定義React hooks集合,該集合中的 useDarkMode Hook能夠實現網站主題在明暗模式之間的切換。切換模式后,它將當前值儲存在localStorage中。這意味無論在哪里打開瀏覽器,用戶偏好的模式將會被應用于所有瀏覽器。
安裝庫:
npm install react-recipes --save
引用:
import { useDarkMode } from "react-recipes";
舉個例子,一般來說,useDarkMode() 返回結果有兩類:
darkMode: 當開啟黑暗模式,布爾值為真。
setDarkMode:在明暗模式之間切換。
functionApp() { const [darkMode, setDarkMode]=useDarkMode(); return ( <divclassNamedivclassName="header"> <ToggledarkModeToggledarkMode={darkMode} setDarkMode={setDarkMode} /> </div> ); }
感謝各位的閱讀,以上就是“怎么使用不同的React hooks來解決日常所遇到的問題”的內容了,經過本文的學習后,相信大家對怎么使用不同的React hooks來解決日常所遇到的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。